我有以下一次性服务+计时器:
$ 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
然后我重新启动了服务器:
$ last reboot | head -1
reboot system boot 3.10.0-1160.71.1 Tue May 30 17:53 - 15:02 (21:09)
看起来该服务在重启后立即运行
$ 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...
$
如何防止我的一次性服务仅在早上 8 点触发而不是在重启后启动?
答案1
不要[Install]
将服务放入multi-user.target
。我强烈怀疑它不是由计时器运行的——它是在启动时运行的,因为您要求它在启动时运行,方法是将其放在 multi-user.target 中。
因此,systemctl disable
.service,也许会删除它的 [Install] 部分,以防止它在将来被意外重新启用。