我编写了一个新贵的脚本来在tmux会话中启动守护程序。它可以很好地工作,并且如果意外死机,可以重新生成该过程,但是我似乎无法手动停止它。
该工作(称为bukkit)如下所示:
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"
当我发出a时,stop bukkit
它会冻结约10秒(我想是睡眠计时器)并打印bukkit start/running, process 2391
。当我设置upstart进行调试时,我在日志中找到了以下相关行:
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
为什么新贵应该停止它时才重新产生我的过程?