编辑:这个问题被标记为可能重复,它提供了一种脚本在运行时阻止关机的方法。我的问题是,在关机过程中,我想扳机运行脚本并让其完成,然后再继续关闭。我不确定抑制剂是否适用。
在系统启动时我有一个rc.local
打开 Minecraft 的文件,它可以工作:
/etc/rc.local:
su -l minecraftUser -c "screen -dmS minecraft /home/minecraftUser/server/wrapper.sh"
我正在尝试启动安全关机过程,以便我可以发出关机信号并让其安全关闭 Minecraft。这是我目前拥有的:
/etc/init.d/shutdownMinecraft.sh:
su -l minecraftUser -c "screen -S minecraft -p 0 -X stuff \"stop $(printf \\r)\""
while [ -e /proc/$(pidof java) ]; do sleep 0.1; done
echo "Done stopping server" >> /home/minecraftUser/server/logs/latest.log
以及 rc0.d 和 rc6.d 中的符号链接:
K01shutdownminecraft -> /etc/init.d/shutdownMinecraft.sh
.. 但是,它不起作用。日志没有显示正确的 Minecraft 关闭消息(保存世界),也没有显示最后的回声。如果我手动运行脚本(sudo ./shutdownMinecraft.sh
),它似乎永远挂起。^c
显示 Java 确实关闭了,并且服务器正确关闭了——但我的 while 循环没有按预期工作。
因此,有两个问题:
- 我的 while 循环有什么问题?
- 我怎样才能让 Ubuntu 在执行此脚本时等待?我希望 Ubuntu 在脚本无限挂起时不会关闭,但它还是会关闭。