編輯:這被標記為可能重複的問題為腳本提供了一種防止腳本運行時關閉的方法。我的問題是在關閉過程中,我想扳機在繼續關閉之前運行並讓它完成的腳本。我不確定抑制劑是否適用。
在系統啟動時,我有一個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
ing out 表明 Java 實際上關閉了,並且伺服器正確關閉了——但是我的 while 循環沒有按預期工作。
那麼,兩個問題:
- 我的 while 循環出了什麼問題?
- 我怎麼才能讓 Ubuntu 在這個腳本執行時等待?我希望 Ubuntu 在我的腳本無限掛起時不會關閉,但無論如何它都會關閉。