J'ai écrit un script parvenu pour lancer un démon dans une session tmux. Il fonctionne bien et réapparaît le processus s'il meurt de façon inattendue, mais je n'arrive pas à l'arrêter manuellement.
Le travail (appelé bukkit) ressemble à ceci:
start on filesystem
stop on runlevel [!2345]
respawn
respawn limit 5 30
chdir /home/minecraft/bukkit
expect daemon
kill timeout 30
pre-start script
test -x /home/minecraft/bukkit/craftbukkit-0.0.1-SNAPSHOT.jar || { stop; exit 0; }
end script
pre-stop script
tmux send -t bukkit "stop"
tmux send -t bukkit "Enter"
sleep 10 # Wait for server to shut down properly
end script
exec tmux new-session -d -s minecraft -n bukkit "sudo -u minecraft -- /home/minecraft/java/jre1.6.0_27/bin/java -Xincgc -Xmx1G -jar /home/minecraft/bukkit/craftbukkit-0.0.1-SNAPSHOT.jar"
Lorsque j'émets un, stop bukkit
il se bloque pendant environ 10 secondes (la minuterie de mise en veille, je suppose) et s'imprime bukkit start/running, process 2391
. Lorsque j'ai configuré upstart pour déboguer, j'ai trouvé ces lignes pertinentes dans le journal:
Sep 21 19:14:59 cheftest init: bukkit goal changed from start to stop
Sep 21 19:14:59 cheftest init: bukkit main process (2499) exited normally
Sep 21 19:14:59 cheftest init: bukkit main process ended, respawning
Sep 21 19:14:59 cheftest init: bukkit goal changed from stop to respawn
Pourquoi upstart continue de réapparaître mon processus alors qu'il est censé l'arrêter?
Au cas où quelqu'un d'autre se retrouverait ici, j'ai soumis un correctif de travail au bogue:
https://bugs.launchpad.net/upstart/+bug/568288/comments/6
la source
Un correctif a été publié dans upstart 1.10 pour cela, alors maintenant cela ne devrait pas se produire.
la source