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 que myscript.sh
lidar com a coisa toda, incluindo systemctl
.
Acho estranho, no entanto, usar systemctl
dentro de 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?
Ao (ab?) usando o WatchdogSec, o serviço será encerrado quando falhar em reconhecer dentro do tempo. Em seguida, ele será reiniciado, mas execute o script primeiro.
ref: WatchdogSec
Fazer o backup do serviço durante a execução seria um serviço muito melhor.