O script init.d RedHat não será iniciado com o serviço após a parada

1

Eu tenho o script de serviço abaixo, que chama um script de shell. Nós mudamos algo no script Quando eu executo o shell script diretamente, tudo funciona bem. Quando eu reinicio o server, tudo funciona bem. Se eu chamar sudo service my-service stop then sudo service my-service start , ele será interrompido, mas nunca será iniciado novamente. Ele diz systemctl OK, mas um processo nunca arranca, e nenhum registro é escrito a partir do script de shell. Mesmo se eu chamar sudo /etc/init.d/my-service , não será iniciado. Mais uma vez, lembre-se, isso vai começar bem automaticamente no reinício do servidor. Quaisquer pensamentos sobre o que poderia ser o problema, ou como obter melhor registro a partir deste início falhado?

#!/bin/bash
#
# my-service
#
# chkconfig: 345 84 15
# description:  Start up the My Service process.
# config: /etc/sysconfig/my-service
# processname: java

# Source function library.
. /etc/init.d/functions

# Loading the configuration parameters.
if [ -f /etc/sysconfig/my-service ]; then
  source /etc/sysconfig/my-service
fi

RETVAL=0

case "$1" in
 start)
        if [ -f /opt/my-service/latest/bin/my-service-start.sh ];
          then
            logger -s "Starting My Service"
            /bin/su -p -s /bin/sh myserviceuser /opt/my-service/latest/bin/my-service-start.sh
            RETVAL=$?
            [ $RETVAL = 0 ] && touch /var/lock/subsys/my-service
        fi
        ;;
 stop)
        if [ -f /opt/my-service/latest/bin/my-service-stop.sh ];
          then
            logger -s "Stopping My Service"
            /bin/su -p -s /bin/sh myserviceuser /opt/my-service/latest/bin/my-service-stop.sh
            RETVAL=$?
            [ $RETVAL = 0 ] && rm -f /var/lock/subsys/my-service
        fi
        ;;
 restart)
        $0 stop
        $0 start
        ;;
 *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

exit $RETVAL
    
por Spencer Kormos 04.11.2014 / 21:00

1 resposta

0

"Alteramos algo no script"

Não há informações suficientes para responder de forma autoritária a essa pergunta, pois o conteúdo de my-service-start.sh e my-service-stop.sh é um mistério.

Supondo que tudo o que você disse é verdade, então o caso é que my-service-start.sh não funciona como esperado, pois my-service-start.sh e my-service-stop.sh já foram executados. Mesmo que funcione bem na primeira inicialização. Isso significa que algo é alterado depois que os scripts foram executados. As coisas não são as mesmas de quando o script de início foi executado com sucesso. Talvez uma porta que seu script de início precise ainda esteja amarrada.

Sugiro investigar o manuseio de arquivos PID para impedir que o seu script pise em si mesmo e analise seus scripts start / stop para o que está sendo alterado. Tente adicionar um tratamento de erros ao seu script de início e veja se isso ajuda a isolar o problema.

    
por 04.11.2014 / 21:17