具有多个日历时刻的计时器

具有多个日历时刻的计时器

我正在使用 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

可以指定多次,在这种情况下,只要任何指定的表达式过去,计时器单元就会触发。

如果多个组件发生变化,那么我建议使用第二种解决方案:

OnCalendar=Mon..Wen 10:00  
OnCalendar=Thu..Fri 21:00

相关内容