Systemd 计时器每分钟在 09:15 - 17:15 之间

Systemd 计时器每分钟在 09:15 - 17:15 之间

我需要一项服务在 09:15 - 17:15 之间每分钟启动一次。

实现这一目标的最佳方法是什么?

我可以创建 3 个计时器,一个用于启动 (1),一个用于每分钟运行一次服务的计时器 (2),一个用于停止它 (3)。但对于中间的重新启动来说它就不那么稳健了。

答案1

您可以创建具有多个设置的单个计时器单元OnCalendar=,这将允许您指定所需的确切间隔。

如果您查看 systemd.timer 的手册页,OnCalendar=部分说:

可以指定多次。

因此,对开始、中间和结束使用三个单独的设置:

[Timer]
OnCalendar=*-*-* 09:15..59:00
OnCalendar=*-*-* 10..16:*:00
OnCalendar=*-*-* 17:00..15:00

这应该在 9:15 到 17:15(含)之间每分钟触发一次计时器。

答案2

要准确地在所需时间之间运行,您需要 cron 中的 3 条记录

15-59 9 * * * /path/to/task
* 10-16 * * * /path/to/task
0-15 17 * * * /path/to/task

答案3

它必须是 Systemd 计时器吗?您还可以创建一个定时任务为了这个任务。例如这样:

*/1 9-17 * * * /bin/systemctl restart SERVICE

这不会正好在 9:15 到 17:15 之间运行,而是在 9 点到 17:59 之间运行。但我不太擅长创建高级 cronjobs...

相关内容