Saya menulis skrip pemula untuk meluncurkan daemon di dalam sesi tmux. Ini bekerja dengan baik dan respawn proses jika mati tiba-tiba, tetapi saya tidak bisa menghentikannya secara manual.
Pekerjaan (disebut bukkit) terlihat seperti ini:
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"
Ketika saya mengeluarkannya stop bukkit
macet selama ~ 10 detik (pengatur waktu tidur, saya kira) dan mencetak bukkit start/running, process 2391
. Ketika saya mulai pemula untuk debug, saya menemukan baris yang relevan di log:
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
Mengapa pemula tetap respawn proses saya ketika seharusnya menghentikannya?
Jika ada orang lain yang berakhir di sini, saya telah mengirimkan patch yang berfungsi ke bug:
https://bugs.launchpad.net/upstart/+bug/568288/comments/6
sumber
Perbaikan dirilis pada pemula 1,10 untuk ini, jadi sekarang seharusnya tidak terjadi.
sumber