Página 2 de 3 PrimeiroPrimeiro 123 ÚltimoÚltimo
+ Responder ao Tópico



  1. Citação Postado originalmente por tifoski Ver Post
    ...desculpe, utilizarei da próxima...
    Sem crise Lucas

    Citação Postado originalmente por tifoski Ver Post
    Há alguma forma de colocar este serviço no ar, sem o nohup neste script?
    Abaixo disponho código que testei no Ubuntu. No meu teste, usei Python, em vez de Java, e o payload foi um builtin, sem o parâmetro -jar. Readaptei para seu aplicativo, após ajustes, e publico o script para que faça os devidos testes

    Tirei o "touch", por ser redundante (afinal você já tinha uma saída ">"), e fiz ajustes num grep, que estava dando erro de "invalid max count". Também melhorei o retorno de status, adicionando o número do processo.

    Código :
    ### BEGIN INIT INFO
    # Provides:          TRANSX
    # Required-Start:    $syslog $remote_fs
    # Required-Stop:     $syslog
    # Default-Start:     3 5
    # Default-Stop:
    # Description:       Servico TRANSX
    ### END INIT INFO
     
    SERV=transx
    APPPATH="/transx/recargametro"
    JAVA_BIN="/root/jdk1.7.0_25/bin/java"
     
    PAYLOAD="transx-1.0.103.jar"
    PIDFILE="/var/run/$SERV.pid"
     
     
    start() {
         echo -n "Starting $SERV: "
         if [ -f $PIDFILE ]; then
             PID=`cat $PIDFILE`
             echo $SERV already running $PID.
             exit 2;
         else
             cd $APPPATH
             $JAVA_BIN -jar $PAYLOAD &> /dev/null &
             RETVAL=$?
             [ $RETVAL -eq 0 ] && echo `ps aux | grep -- "$PAYLOAD" | grep -v grep | awk {'print $2'}` > $PIDFILE
             echo OK
             return $RETVAL
         fi
    }
     
    stop() {
        echo -n "Stopping $SERV: "
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            kill $PID && rm -f $PIDFILE
            echo OK
            return 0
        else
            echo "not running or pid file is gone."
        fi
    }
     
    status() {
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            echo "running at PID" $PID.
            return 0
        else
            echo "not running"
            return 1
        fi
    }
     
    case "$1" in
             start)
                     start
        ;;
        stop)
            stop
        ;;
        status)
            status
        ;;
        restart)
            stop
            start
        ;;
        *)
            echo "Usage:  {start|stop|restart}"
            exit 1
        ;;
    esac
     
    exit $?

    Faça o teste, e mantenha-nos informado

  2. Citação Postado originalmente por trober Ver Post
    Sem crise Lucas



    Abaixo disponho código que testei no Ubuntu. No meu teste, usei Python, em vez de Java, e o payload foi um builtin, sem o parâmetro -jar. Readaptei para seu aplicativo, após ajustes, e publico o script para que faça os devidos testes

    Tirei o "touch", por ser redundante (afinal você já tinha uma saída ">"), e fiz ajustes num grep, que estava dando erro de "invalid max count". Também melhorei o retorno de status, adicionando o número do processo.

    Código :
    ### BEGIN INIT INFO
    # Provides:          TRANSX
    # Required-Start:    $syslog $remote_fs
    # Required-Stop:     $syslog
    # Default-Start:     3 5
    # Default-Stop:
    # Description:       Servico TRANSX
    ### END INIT INFO
     
    SERV=transx
    APPPATH="/transx/recargametro"
    JAVA_BIN="/root/jdk1.7.0_25/bin/java"
     
    PAYLOAD="transx-1.0.103.jar"
    PIDFILE="/var/run/$SERV.pid"
     
     
    start() {
         echo -n "Starting $SERV: "
         if [ -f $PIDFILE ]; then
             PID=`cat $PIDFILE`
             echo $SERV already running $PID.
             exit 2;
         else
             cd $APPPATH
             $JAVA_BIN -jar $PAYLOAD &> /dev/null &
             RETVAL=$?
             [ $RETVAL -eq 0 ] && echo `ps aux | grep -- "$PAYLOAD" | grep -v grep | awk {'print $2'}` > $PIDFILE
             echo OK
             return $RETVAL
         fi
    }
     
    stop() {
        echo -n "Stopping $SERV: "
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            kill $PID && rm -f $PIDFILE
            echo OK
            return 0
        else
            echo "not running or pid file is gone."
        fi
    }
     
    status() {
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            echo "running at PID" $PID.
            return 0
        else
            echo "not running"
            return 1
        fi
    }
     
    case "$1" in
             start)
                     start
        ;;
        stop)
            stop
        ;;
        status)
            status
        ;;
        restart)
            stop
            start
        ;;
        *)
            echo "Usage:  {start|stop|restart}"
            exit 1
        ;;
    esac
     
    exit $?

    Faça o teste, e mantenha-nos informado

    Com estes ajustes o Stop não está funcionando e o PID não aparece, apenas aparece a palavra PID, mas não o número do processo. Quando dou um cat /var/run/transx.pid, ele retorna em branco :/ sabe o que pode ser?



  3. Citação Postado originalmente por tifoski Ver Post
    Com estes ajustes o Stop não está funcionando e o PID não aparece, apenas aparece a palavra PID, mas não o número do processo. Quando dou um cat /var/run/transx.pid, ele retorna em branco :/ sabe o que pode ser?
    Roda "na mão" o comando abaixo, substituindo seu $PAYLOAD, e diga o que aparece. Mantenha as aspas duplas (double quotes).

    Código :
    ps aux | grep -- "$PAYLOAD" | grep -v grep | awk {'print $2'}

  4. Citação Postado originalmente por trober Ver Post
    Roda "na mão" o comando abaixo, substituindo seu $PAYLOAD, e diga o que aparece. Mantenha as aspas duplas (double quotes).

    Código :
    ps aux | grep -- "$PAYLOAD" | grep -v grep | awk {'print $2'}

    Olha,

    Deixei da seguinte forma e funcionou:

    Código :
     ps aux | grep $PAYLOAD | grep -v grep | awk {'print $2'}
    [/QUOTE]

    O unico problema agora é o Stop, está acontecendo da seguinte forma. Eu dou o comando /etc/init.d/transx stop e ele me retorna a seguinte mensagem:

    Código :
     Stopping transx: /etc/init.d/transx: Line 38: kill: 2909 (PID):Invalid signal specification OK
    [QUOTE]

    Após isso, vou no script, altero o kill para kill -l, ele retorna a mensagem, quando retorno para kill apenas, ele começa a dar o stop normalmente, mas se reinicio o server, volta a dar a mesma mensagem.

    Atenciosamente,

    Lucas Farias



  5. Citação Postado originalmente por tifoski Ver Post
    ...altero o kill para kill -l, ele retorna a mensagem, quando retorno para kill apenas, ele começa a dar o stop normalmente, mas se reinicio o server, volta a dar a mesma mensagem.
    Lucas, experimenta "kill -9".






Tópicos Similares

  1. Respostas: 9
    Último Post: 23-01-2011, 13:11
  2. script como servico
    Por softov no fórum Linguagens de Programação
    Respostas: 4
    Último Post: 30-04-2009, 06:44
  3. Respostas: 17
    Último Post: 18-04-2007, 10:06
  4. Usando firewall como servico com adsl-init
    Por Daniels no fórum Servidores de Rede
    Respostas: 0
    Último Post: 26-07-2005, 15:57
  5. como abrir um programa como root?
    Por ApitaAqui no fórum Servidores de Rede
    Respostas: 16
    Último Post: 08-03-2005, 20:26

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L