等待程序在关机时结束

等待程序在关机时结束

编辑:这个问题被标记为可能重复,它提供了一种脚本在运行时阻止关机的方法。我的问题是,在关机过程中,我想扳机运行脚本并让其完成,然后再继续关闭。我不确定抑制剂是否适用。


在系统启动时我有一个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 循环没有按预期工作。

因此,有两个问题:

  1. 我的 while 循环有什么问题?
  2. 我怎样才能让 Ubuntu 在执行此脚本时等待?我希望 Ubuntu 在脚本无限挂起时不会关闭,但它还是会关闭。

相关内容