systemd-模拟Anacron行为的计时器单元


13

我需要为经常使用的机器(例如经典台式机安装)编写一个计时器单元。该计时器单元需要定期但不经常(例如,每周,每月)激活。

我确实找到了一些方法,但是它们都不适合:

  • 根据手册页OnBootSecOnStartupSec如果配置的时间点已过去,则只会激活和指令。我还找到了一些结合使用OnActiveSec来定义常规事件的示例。问题是:每次启动计算机时,计时器都会激活已配置的单元。如果您有一个计时器,它应该每周/每月一次运行,那是非常频繁的。例如:我不想让日志每天旋转3次...

  • OnCalendar指令解决。如果机器在配置的时间点关闭电源(通常是午夜,因为如果您在时间规范中省略了小时,则默认为00:00:00),则下次启动后将不会激活计时器。至少这是我得到的方式。那正确吗 ?

因此,出现了一个问题:
如果配置的时间过去了,下次启动后是否立即激活带有日历事件的计时器?
如果不是:是否有解决方法来获得这种行为?


好的,我知道这一点。还是要走吗?还是有更优雅的解决方案?是否计划改善当前状况?
mmh 2013年

Answers:


15

此功能已经实现在使用systemd(版本> = 212)Persistent=的指令,所以你只需要插入Persistent=true在单元文件,而使用OnCalendar=指令建立的日期/时间运行作业。

持续=

接受布尔参数。如果为true,则最后一次触发服务单元的时间存储在磁盘上。激活计时器后,如果在计时器处于非活动状态的时间内至少触发了一次服务单元,则会立即触发该服务单元。这对于在机器关闭时弥补错过的服务运行很有用。请注意,此设置仅对使用OnCalendar =配置的计时器有效。


是不是相反?OP要求消除同时具有OnBootSec和导致的额外运行OnActiveSecPersistent如果由于停机而错过了至少一次运行,则在启动时运行一次吗?
x-yuri

好吧,您可能是这样说的
x-yuri

0

根据对systemd-devel邮件列表上的电子邮件所需的行为是在路线图上,将在未来增加。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.