systemd 计时器在每小时 30 分钟后每 2 小时执行一次?

Mou*_*inX 6 systemd systemd-timer

有几个关于systemd定时器的很好的参考资料,包括这个:

systemd.time

不幸的是,我仍然不清楚如何创建一个定期运行的计时器,但在每小时结束后的特定分钟数内运行。

我想创建一个计时器,每 2 小时运行 30 分钟。因此它将在 14:30(下午 2:30)、16:30、18:30、20:30 等运行。

我尝试了几件不起作用的事情,包括:

OnCalendar=*-*-* *00/2:30
Run Code Online (Sandbox Code Playgroud)

和这个:

OnCalendar=*-*-* *:00/2:30
Run Code Online (Sandbox Code Playgroud)

我没有找到产生所需结果的时间规范。

此外,它不必在那一刻完全运行,所以我正在考虑使用:

AccuracySec=5m
Run Code Online (Sandbox Code Playgroud)

don*_*sti 13

每 2 小时在 30 分钟后应

OnCalendar=00/2:30
#   iow    hh/r:mm
Run Code Online (Sandbox Code Playgroud)

00/2- 该hh值是00和重复值r2这意味着该hh值加上重复值的所有倍数将被匹配(00, 02, 04.. 14, 16..etc)
30- 该mm值,30将匹配每小时过去 30 分钟

我在同一man页上留下了日期和秒数:

可以省略日期指定,在这种情况下,暗示当前日期 [...] [...] 如果未指定第二个组件,则假定为“:00”。


小智 9

为未来读者提供的解决方案:

    # 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
Run Code Online (Sandbox Code Playgroud)