espere o programa terminar no desligamento

espere o programa terminar no desligamento

EDIT: A questão que está marcada como uma possível duplicata oferece uma maneira de um script evitar o desligamento enquanto está em execução. Meu problema é que durante o processo de desligamento, queroacionarum script para ser executado e deixá-lo terminar antes de continuar o desligamento. Não tenho certeza se os inibidores são aplicáveis.


Na inicialização do sistema tenho um rc.localarquivo que abre o Minecraft, funciona:

/etc/rc.local:

su -l minecraftUser -c "screen -dmS minecraft /home/minecraftUser/server/wrapper.sh"

Estou tentando iniciar um processo de desligamento seguro, para poder sinalizar um desligamento e fechar o Minecraft com segurança. Isso é o que tenho atualmente:

/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

e links simbólicos em rc0.d e rc6.d:

K01shutdownminecraft -> /etc/init.d/shutdownMinecraft.sh

.. Porém, não funciona. O log não mostra as mensagens corretas de desligamento do Minecraft (salvando o mundo) e também não mostra o eco final. Se eu executar o script manualmente ( sudo ./shutdownMinecraft.sh), ele travará aparentemente para sempre. ^cA exibição mostra que o Java de fato fechou e o servidor fechou corretamente - mas meu loop while não funciona conforme o esperado.

Então, duas perguntas:

  1. O que há de errado com meu loop while?
  2. Como posso fazer com que o Ubuntu espere enquanto este script está em execução? Eu esperaria que o Ubuntu não desligasse enquanto meu script estivesse pendurado infinitamente, mas acontece mesmo assim.

informação relacionada