Eu tenho o seguinte serviço oneshot+timer:
$ systemctl cat stop_syncro.service stop_syncro.timer
# /usr/local/lib/systemd/system/stop_syncro.service
[Unit]
Description=Service d_arret de la Synchro
After=network-online.target
[Service]
Type=oneshot
User=root
ExecStart=/root/shl/RUN/stop_syncro.sh
[Install]
WantedBy=multi-user.target
# /usr/local/lib/systemd/system/stop_syncro.timer
[Unit]
Description=Timer d_arret de la Synchro
[Timer]
OnCalendar=Mon-Fri *-*-* 8:00:00
[Install]
WantedBy=timers.target
Então eu reiniciei o servidor:
$ last reboot | head -1
reboot system boot 3.10.0-1160.71.1 Tue May 30 17:53 - 15:02 (21:09)
E parece que o serviço foi executado logo após a reinicialização
$ journalctl -u stop_syncro.service
-- Logs begin at Tue 2023-05-30 17:53:15 CEST, end at Wed 2023-05-31 14:48:17 CEST. --
May 30 17:53:26 PAR-SCAL-01 systemd[1]: Starting Service d_arret de la Synchro...
May 30 17:53:27 PAR-SCAL-01 systemd[1]: Started Service d_arret de la Synchro...
May 31 08:00:01 PAR-SCAL-01 systemd[1]: Starting Service d_arret de la Synchro...
May 31 08:00:02 PAR-SCAL-01 systemd[1]: Started Service d_arret de la Synchro...
$
Como evito que meu serviço oneshot seja acionado apenas às 8h, em vez de também ser iniciado após a reinicialização?
Não faça
[Install]
o serviço emmulti-user.target
. Eu suspeito fortemente que não está sendo executado pelo cronômetro - está sendo executado na inicialização porque você pediu para ser executado na inicialização, colocando-o em multi-user.target.Portanto
systemctl disable
, o .service e talvez remova sua seção [Instalar] para evitar que seja reativado acidentalmente no futuro.