Escribí un script inicial para lanzar un demonio dentro de una sesión tmux. Funciona bien y reaparece el proceso si muere inesperadamente, pero parece que no puedo detenerlo manualmente.
El trabajo (llamado bukkit) se ve así:
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"
Cuando emito un stop bukkit
mensaje, se congela durante ~ 10 segundos (supongo que el temporizador de apagado) e imprime bukkit start/running, process 2391
. Cuando configuré el inicio para depurar, encontré estas líneas relevantes en el registro:
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
¿Por qué el advenedizo sigue reapareciendo mi proceso cuando se supone que lo detiene?
En caso de que alguien más termine aquí, he enviado un parche funcional al error:
https://bugs.launchpad.net/upstart/+bug/568288/comments/6
fuente
Se lanzó una solución en la versión 1.10 para esto, por lo que ahora no debería suceder.
fuente