Eu encontrei uma maneira de fazer isso:
Na inicialização, inicio meu programa auxiliar de controle remoto como um processo não modificado. No entanto, durante o desligamento ele fica morto por S20sendsigs
. Então eu inicio de novo usando um novo script S21remotecontrol
que novamente usa nohup. O programa auxiliar inicia um servidor da Web incorporado. Dessa forma, eu só precisava adicionar curl http://localhost:8081/poweroff
a S90halt
.
Não sei por que curl
está realmente disponível em S90halt
porque todos os sistemas de arquivos devem ter sido desmontados neste momento. No entanto, funciona. Meu trabalho ao redor não é usado: eu adicionei uma opção de atraso para que curl
pudesse ser chamado antes de desmontar, mas atrasando o comando do switch por alguns segundos.
Importante! O programa auxiliar não deve escrever um arquivo de log, já que ele falhará após a desmontagem durante o desligamento e pode travar o programa. Para iniciar o ajudante eu uso: nohup command >/dev/null 2>&1 &
.