Ubuntu upstart: Por que reiniciar faz o mesmo que parar?

3

Este é o meu arquivo upstart /etc/init/myapp.conf :

description "Example of starting Node with Upstart and Forever"

start on filesystem or runlevel [2345]
stop on runlevel [06]

expect fork

console output

setuid lwood

env HOME=/home/lwood
env LOG="/home/lwood/myapp/applog.log"    

script
  cd $HOME
  exec forever -a -l $LOG \
       start /home/lwood/myapp/app.js
end script

pre-stop script
  cd $HOME
  exec forever stop /home/lwood/myapp/app.js >> $LOG
end script

Você sabe por que sudo restart myapp está apenas parando o serviço? Não inicia o serviço depois de o parar. Por isso, tem o mesmo efeito que sudo stop myapp .

Fazer sudo stop myapp e, em seguida, sudo start myapp funciona bem. Imaginando por que o reinício se comporta de maneira diferente.

Estou no Ubuntu 12.04.

    
por lwood 23.10.2013 / 21:12

2 respostas

3

Existe um erro no upstart . Ainda existe no Ubuntu Raring 13.04, mas ainda não testei o Saucy ou mais tarde.

Basicamente, pre-stop deve ser evitado. Isso causa alterações de estado indefinidas na reinicialização. Se você estiver usando-o para acionar o desligamento de um daemon, como no seu caso, ele simplesmente parará tudo. Em um uso mais clássico, até mesmo a especificação de um script pre-stop impedirá que o processo principal seja reiniciado (conforme demonstrado no relatório de erros).

O comportamento de tarefas "on stopping" parece não ser afetado, portanto, uma solução é criar um job myapp-stop.conf que é acionado "on myapp". A única desvantagem aparente é que é mais difícil saber quando todas as outras tarefas potencialmente "on myapp" estão concluídas.

    
por xdissent 05.11.2013 / 06:27
0

Para expandir a resposta do xdissent (que funcionou para mim), aqui está um script de exemplo que você pode colocar em /etc/init/tomcat-stop.conf . Quando o serviço tomcat é interrompido, esse script é executado e encerra o Tomcat corretamente antes que o Upstart o reinicie.

description "Tomcat Server shutdown script"

setuid tomcat_user
setgid tomcat_group

chdir /usr/local/tomcat

start on stopping tomcat

kill timeout 30
script
    exec bin/catalina.sh stop
end script
    
por spiffytech 28.10.2014 / 16:19

Tags