Como parar um serviço antes de executar uma entrada ExecStart?

1

Eu gostaria de configurar um Timer que irá parar um serviço, executar um script e reiniciar o serviço.

Uma das possibilidades é usar

Type=oneshot
ExecStartPre=/bin/systemctl stop myservice
ExecStart=/usr/local/bin/myscript.sh
ExecStartPost=/bin/systemctl start myservice

Outra é ter myscript.sh manipulando a coisa toda, incluindo systemctl .

No entanto, acho estranho usar systemctl em uma declaração de serviço, quando pode haver mecanismos internos do systemd para interagir com os serviços. Existe uma maneira mais limpa de realizar essas operações?

    
por WoJ 21.11.2018 / 11:14

1 resposta

0

Por (ab?) usando o WatchdogSec, o serviço terminará quando falhar em reconhecer dentro do tempo. Em seguida, ele será reiniciado, mas execute o script primeiro.

WatchdogSec={interval}
Restart=on-watchdog
ExecStopPost=/script.sh

ref: WatchdogSec

Fazer com que o serviço possa ser armazenado em backup durante a execução seria um serviço muito mais agradável.

    
por 27.11.2018 / 08:35