我正在寻找一个每 1 小时 18 分钟运行一次的 systemd 计时器,但我只有这个线索。
systemd-analyze --iterations=3 calendar *:0/18
每 18 分钟一班。
答案1
对于定期运行的单调计时器(例如,每 X 分钟和 Y 秒、每 X 天和 Y 分钟等),您必须定义起始点和重复值。这可以通过在该部分中使用两个指令来完成[Timer]
。
这些设置及其起点在中进行了解释sytemd.timer
手册页也提到了这一点
多个指令可以由相同和不同类型组合而成,在这种情况下,只要任何指定的计时器表达式过去,计时器单元就会触发。例如,通过组合
OnBootSec=
和OnUnitActiveSec=
,可以定义一个定期运行的计时器,并每次激活特定的服务。
因此,对于每 1 小时 18 分钟运行一次的计时器,您可以使用类似以下内容的代码:
[Timer]
Unit=test.service
AccuracySec=1s
OnActiveSec=5s
OnUnitActiveSec=1h 18min
上式中,初始触发是
OnActiveSec=
定义相对于定时器单元本身被激活的时刻的定时器。
重复是通过
OnUnitActiveSec=
定义相对于计时器单元正在激活的单元上次激活时间的计时器。
请注意,对于作为参数提供的时间跨度,您可以使用中描述的任何时间单位systemd.time
手册页这意味着
OnUnitActiveSec=1h 18min
是相同的
OnUnitActiveSec=78m
或者
OnUnitActiveSec=4680