我想从早上 9 点到晚上 1 点(当地时间午夜过后一小时)每小时运行一个 systemd 服务。
作为起点,我可以使用类似于以下的时间规范来从上午 9 点到晚上 11 点运行计时器:"*-*-* 09..23:00:00"
我可以用以下方法测试它:
systemd-analyze calendar "*-*-* 09..23:00:00"
根据输出,这似乎可以正常工作。
但是,当我尝试类似以下内容时,它不起作用:
systemd-analyze calendar "*-*-* 09..01:00:00"
Failed to parse calendar specification '*-*-* 08..01:00:00': Invalid argument
我已经尝试了以下多种变体,但尚未成功:
systemd-analyze calendar "*-*-* 00..01:00:00,09..23:00:00"
我想我已经很接近了,但我无法得到正确的符号。曾经提到过https://man.archlinux.org/man/systemd.time.7
答案1
正确的解决方案如下所示:
OnCalendar=*-*-* 00..01,09..23:00:00
您不能在表示法中混合小时和分钟,这就是此形式不起作用的原因:
"*-*-* 00..01:00:00,09..23:00:00"
在指定分钟之前需要定义每小时范围。在这种情况下,每小时范围是:
00..01,09..23