systemd 计时器每 15 分钟一次

systemd 计时器每 15 分钟一次

我正在尝试制作一个每 15 分钟运行一次的 systemd 计时器。现在我有:

  • timer-fifteen.timer:

    [Unit]
    Description=15min timer
    
    [Timer]
    OnBootSec=0min
    OnCalendar=*:*:0,15,30,45
    Unit=timer-fifteen.target
    
    [Install]
    WantedBy=basic.target  
    
  • timer-fifteen.target:

    [Unit]
    Description=15min Timer Target
    StopWhenUnneeded=yes
    

这样一遍又一遍地运行,没有停止。有必要这样*:0,15,30,45:*代替吗?我怎样才能做到这一点?

答案1

你的语法翻译为每 15,如果你想要每 15分钟,IMO 最易读的方式是:

OnCalendar=*:0/15

与您在问题中使用的最相似的答案是:

OnCalendar=*:0,15,30,45

更多信息:

答案2

根据系统时间, 那个设定

OnCalendar=*:0/15

准确翻译为

OnCalendar=*:0,15,30,45

即,它会在整点、一刻、半刻和一刻整准确启动装置。

根据您的服务,这可能不是您想要的,也不是您在所有情况下都需要的。

运行的计时器每15分钟一班– 例如在 1:02、1:17、1:32、1:47、2:02… – 始终取决于上次运行的时间 – 可以通过系统定时器环境

OnUnitActiveSec=15min

现在,您还希望该单元在启动后一段时间启动(除非您想手动激活该单元或具有执行此操作的依赖项),因此您可能应该指定

OnBootSec=10min
OnUnitActiveSec=15min

让设备在启动后 10 分钟启动一次,然后在第一次启动后每 15 分钟启动一次。

此外,还有一个设置OnUnitInactiveSec,在服务完成后开始计算时间停止了(或者,更一般地说,该单元已停用)。

相关内容