Como eu mudo o limite de tempo nos scripts de desligamento do systemd?

2

Eu tenho um script que quero rodar logo antes do desligamento na minha máquina do CentOS 7. Um processo para fazer isso usando O systemd é bem descrito nesta questão anterior . Basicamente, acabei de soltar o script que quero executar em /usr/lib/systemd/system-shutdown/ e ele será executado automaticamente.

Isso funciona, mas meu script pode demorar um pouco (vários minutos). Parece que há um tempo limite de 90 segundos, após o qual meu script é morto e o sistema pára. Como posso alterar esse limite de tempo?

Com base na discussão aqui , tentei definir DefaultTimeoutStartSec=infinity e DefaultTimeoutStopSec=infinity em /etc/systemd/system.conf , mas não teve o efeito desejado.

Editar: Eu cavei um pouco mais e descobri o motivo: quando os scripts de desligamento são executados dessa forma, eles são executados pelo binário systemd-shutdown . Seu código-fonte pode ser encontrado aqui . Especificamente, esse trecho de código é responsável pela execução dos scripts:

execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, arguments);

DEFAULT_TIMEOUT_USEC é definido em basic/def.h da seguinte forma:

#define DEFAULT_TIMEOUT_USEC (90*USEC_PER_SEC)

Portanto, parece haver um limite de 90 segundos embutido, tornando esse mecanismo inútil para minha necessidade aqui. Que outro método seria apropriado para executar um script no desligamento? Eu poderia criar meu próprio serviço systemd que é WantedBy o alvo de parada? Eu gostaria de executar o script uma vez que os sistemas de arquivos foram remontados somente para leitura (tão tarde no processo).

    
por Jason R 28.07.2017 / 22:21

0 respostas