我正在尝试制作一个每 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
,在服务完成后开始计算时间停止了(或者,更一般地说,该单元已停用)。