3 votes

Ubuntu upstart : Pourquoi le redémarrage fait-il la même chose que l'arrêt ?

Voici mon fichier 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

Savez-vous pourquoi sudo restart myapp ne fait qu'arrêter le service ? Il ne démarre pas le service après l'avoir arrêté. Cela a donc le même effet que sudo stop myapp .

Faire sudo stop myapp et ensuite sudo start myapp fonctionne pourtant bien. Je me demande pourquoi le redémarrage a un comportement différent.

Je suis sur Ubuntu 12.04.

3voto

xdissent Points 131

Hay un bug dans upstart . Il existe toujours dans Ubuntu Raring 13.04, mais je n'ai pas encore testé Saucy ou plus.

En gros, pre-stop doit être évitée. Il provoque des changements d'état indéfinis au redémarrage. Si vous l'utilisez pour déclencher l'arrêt d'un démon, comme dans votre cas, il arrêtera tout. Dans une utilisation plus classique, même le fait de spécifier une commande pre-stop script empêchera votre processus principal de redémarrer (comme démontré dans le rapport de bogue).

Le comportement des tâches "à l'arrêt" ne semble pas être affecté. Une solution consiste donc à créer un fichier de type myapp-stop.conf qui est déclenché "à l'arrêt de myapp". Le seul inconvénient apparent est qu'il est plus difficile de savoir quand tous les autres travaux potentiellement "on stopping myapp" sont terminés.

0voto

spiffytech Points 141

Pour développer la réponse de xdissent (qui a fonctionné pour moi), voici un exemple de script que vous pouvez placer dans /etc/init/tomcat-stop.conf . Lorsque le tomcat est arrêté, ce script s'exécute et arrête proprement Tomcat avant que Upstart ne le redémarre.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X