дождаться завершения программы при выключении

дождаться завершения программы при выключении

EDIT: Вопрос, что это отмечено как возможный дубликат предлагает способ для скрипта предотвратить выключение во время его работы. Моя проблема в том, что во время процесса выключения я хочукурокскрипт для запуска и дайте ему завершиться, прежде чем продолжить выключение. Я не уверен, что ингибиторы применимы.


При запуске системы у меня есть 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), он зависает, по-видимому, навсегда. ^cing out показывает, что Java действительно закрылась, и сервер закрылся правильно — но мой цикл while не работает так, как ожидалось.

Итак, два вопроса:

  1. Что не так с моим циклом while?
  2. Как заставить Ubuntu ждать, пока этот скрипт выполняется? Я ожидал, что Ubuntu не выключится, пока мой скрипт висит бесконечно, но он все равно выключается.

Связанный контент