配置 systemd 计时器在首次运行后每小时运行一次

ajg*_*619 5 arch-linux systemd

我有一项每小时运行一次的服务(使用OnCalendar=hourly)。如果系统处于 24/7 状态,这非常有效,但在退出挂起/休眠状态后就会变得混乱。该服务将立即运行 - 这就是我想要的 - 但随后它会在每小时的顶部再次运行,无论自上次运行以来已经过去了多少时间。

有没有办法将计时器配置为以 1 小时为间隔运行?

tha*_*isp 3

您可以在Arch-wiki 中查看 systemd 计时器的详细示例。

对于您的情况,您可以使用单调计时器,例如:

[Timer]
OnBootSec=1min
OnUnitActiveSec=1h
Run Code Online (Sandbox Code Playgroud)

实时计时器OnCalendar=hourly在启动后运行(对于错过的一小时,因为Persistent=true我猜是你的原因),然后将遵循固定的日期时间值,因此正如您所描述的,启动后前两次运行之间的间隔可能小于一个小时。

但是您可能不想使用单调计时器,尽管它涵盖了您想要的暂停功能,如果您不希望在重新启动时出现这种行为。Persistent=false适合您的情况,但所有运行都将在固定时间进行。