禁用 systemd 计时器单元的正确方法是什么?

bit*_*oob 35 systemd systemd-timer

我已经成功地将我的一些 cron 作业迁移到了 systemd。我遵循了一些指南,并采用了创建 3 个文件的标准方法:

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh
Run Code Online (Sandbox Code Playgroud)

正如您可能猜到的那样,在某个时间触发 myjob.timer,它运行 myjob.service,然后执行 myjob.sh。

我的所有计时器都具有相同的设置,现在我看到一切正常,我想禁用 myjob.timer,它只是一个测试器。

我只是做:

systemctl --user disable myjob.timer
Run Code Online (Sandbox Code Playgroud)

还是我还必须做:

systemctl --user disable myjob.service
Run Code Online (Sandbox Code Playgroud)

正确的做法是什么?我对 systemd 很陌生,所以我想学习如何以正确的方式做事。我猜测禁用这两个单元是正确的,以保持系统没有超额行李运行。

Mar*_*erg 37

如果不myjob.service包含[Install]块,则仅禁用计时器就足够了。计时器是唯一启动.service文件的东西,所以在.timer禁用的情况下,什么都不会启动.service文件。

还要记得跑systemctl --user stop myjob.timer禁用计时器可防止它在下次启动时启动,但不会停止当前正在运行的计时器。

  • 您需要计时器单元上的 [Install] 部分,以便它们在启动时启动。通常`WantedBy=timers.target`。如果您希望在启动时启动 *service*,则您只需要一个服务的 `[Install]` 部分,在这种情况下听起来您*不*想要*。 (4认同)