关于计时器有一些很好的参考资料,systemd
其中包括:
不幸的是,我仍然不清楚如何创建一个定期运行的计时器,但在整点后的特定分钟数运行。
我想创建一个每 2 小时运行一次 30 分钟的计时器。因此它将在 14:30(下午 2:30)、16:30、18:30、20:30 等运行。
我尝试了一些不起作用的方法,包括:
OnCalendar=*-*-* *00/2:30
和这个:
OnCalendar=*-*-* *:00/2:30
我没有找到产生所需结果的时间规范。
另外,它不必在那一刻运行,所以我正在考虑使用:
AccuracySec=5m
答案1
每 2 小时整点 30 分钟应
OnCalendar=00/2:30
# iow hh/r:mm
00/2
-hh
值为00
,重复值为r
,2
这意味着hh
将匹配该值加上重复值的所有倍数(00
、02
、04
.. 14
、16
.. 等)
30
- 该mm
值30
将匹配每小时过去 30 分钟
从那以后,我在同一页上遗漏了日期和秒数man
:
日期规范可以省略,在这种情况下,隐含当前日期[...][...]如果未指定第二个部分,则假定为“:00”。
答案2
为未来读者提供的解决方案:
# systemd-analyze calendar --iterations=2 '0/2:30:00'
Original form: 0/2:30:00
Normalized form: *-*-* 00/2:30:00
Next elapse: Fri 2023-01-20 16:30:00 EET
(in UTC): Fri 2023-01-20 14:30:00 UTC
From now: 1h 22min left
Iter. #2: Fri 2023-01-20 18:30:00 EET
(in UTC): Fri 2023-01-20 16:30:00 UTC
From now: 3h 22min left