我正在使用 systemd 计时器和单元来自动触发备份作业。但目前它只在晚上的某一时刻运行。是否可以通过在同一个计时器中声明它来使其在多个时刻运行?
现在是这样的:
[Unit]
Description=Run luky-borg-backup every night
[Timer]
OnCalendar=21:00
AccuracySec=1h
Persistent=yes
[Install]
WantedBy=timers.target
应该是这样的:
[Unit]
Description=Run luky-borg-backup every night
[Timer]
OnCalendar=10:00,21:00
AccuracySec=1h
Persistent=yes
[Install]
WantedBy=timers.target
答案1
是否可以通过在同一个计时器中声明它来使其在多个时刻运行?
是的。
看这段摘录来自man systemd.timer
(我的重点):
日历上= 使用日历事件表达式定义实时(即挂钟)计时器。有关日历事件表达式语法的更多信息,请参阅 systemd.time(7)。否则,语义类似于 OnActiveSec= 和相关设置。 请注意,计时器不一定会在使用此设置配置的精确时间到期,因为它受下面的 AccuracySec= 设置的约束。 可以指定多次。
这是我使用的一个工作示例:
[Timer]
OnCalendar=Mon-Sun *-*-* 23:00:00
OnCalendar=Mon-Sun *-*-* 06:00:00
答案2
虽然这篇文章有点老了,但我想指出的是,有几种方法可以在同一个计时器中声明它:
- 那个男人系统时间 规定:
每个组件都可以指定为以逗号分隔的值列表。
就您而言,由于只有一个组件发生变化,我建议使用此解决方案。您几乎已经知道了,逗号需要放置在相同组件的出现之间:
OnCalendar=10,21:00
- 那个男人systemd.定时器 解释说
OnCalendar=
:
可以指定多次,在这种情况下,只要任何指定的表达式过去,计时器单元就会触发。
如果多个组件发生变化,那么我建议使用第二种解决方案:
OnCalendar=Mon..Wen 10:00
OnCalendar=Thu..Fri 21:00