Como executar scripts em / usr / lib / systemd / system-shutdown / na reinicialização ou desligamento?

4

De acordo com esta resposta e este relatório de erros pode-se simplesmente soltar seu script em

/usr/lib/systemd/system-shutdown/

ou para o Debian em

/lib/systemd/system-shutdown/

para que seja executado na reinicialização ou no desligamento. De

link :

Immediately before executing the actual system halt/poweroff/reboot/kexec systemd-shutdown will run all executables in /usr/lib/systemd/system-shutdown/ and pass one arguments to them: either "halt", "poweroff", "reboot" or "kexec", depending on the chosen action. All executables in this directory are executed in parallel, and execution of the action is not continued before all executables finished.

Meu script é descrito em Como executar um script no desligamento do Debian 9 ou Raspbian 8 (Jessie) como:

#!/bin/sh
touch /test

No entanto, ele não parece rodar nos meus sistemas Debian e eu até mesmo relatei isso como bug .

    
por Frank Breitling 24.02.2017 / 12:53

2 respostas

2

Na verdade, o script está sendo executado. Como apontado por Bigon e no relatório de bug, o touch simplesmente não pode ter efeito porque o sistema de arquivos já está montado como somente leitura quando os scripts em /lib/systemd/system-shutdown/ são executados.

Pode-se provar isso montando e lendo-escreva antes do touch :

#!/bin/sh
mount -oremount,rw /
touch /test
mount -oremount,ro /

Agora, o /test realmente aparece depois de uma reinicialização.

No entanto, isso também significa que a execução do meu script por meio dessa pasta não será útil, pois isso acontecerá muito tarde.

Para escrever nos arquivos de registro, etc., é necessário executar o script anteriormente por meio de um serviço, conforme sugerido por Bigon . Eu explico isso em Como executar um script no desligamento do Debian 9 ou Raspbian 8 (Jessie) .

    
por 24.02.2017 / 16:55
4

Portanto, se você quiser executar o script durante o desligamento da máquina, será necessário adicionar um arquivo .service, consulte: Como executar um script com o systemd logo antes do desligamento?

/lib/systemd/system-shutdown/ é reservado para casos especiais e é executado no final do procedimento de desligamento / reinicialização

    
por 24.02.2017 / 15:19