每日 anacron 作业的执行时间

ECI*_*CII 9 crontab cron-jobs cron

我已经设置了一个每日 anacron 工作,它运行 form /etc/cron.daily。从/etc/crontab我看到它应该每天在 06:25(或在启动/重启时)运行。

但是,当日期更改(00:00)并且计算机启动时,我不希望 anacron 等到 06:25。如果计算机已启动,我希望它在日期更改时(00:00)立即运行脚本。添加 cron 作业来运行 anacron @hourly 是否有意义?

非常感谢

ECI*_*CII 8

我找到了如何做到这一点,并在我的博文中对其进行了总结:

如果您想anacron在一天更改时立即更改 to 执行的行为(而不是等到7:30默认行为),请执行以下操作:

gksu gedit /etc/cron.d/anacron
Run Code Online (Sandbox Code Playgroud)

并添加最后 2 行(最后一行将每小时重新启动 anacron):

01 0    * * *   root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
01 0    * * *   root start -q anacron || :
@hourly root start -q anacron || :
Run Code Online (Sandbox Code Playgroud)

  • 您的博客文章链接似乎已损坏。 (4认同)

小智 6

哈立德回答是不正确的。如果anacron已安装(默认情况下是这样),更改此行将不会产生影响:

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Run Code Online (Sandbox Code Playgroud)

如果 anacron 存在,test -x /usr/sbin/anacron将返回true,并阻止该行的后半部分运行。另一个答案(编辑/etc/cron.d/anacron)是正确的,因为这是启动 anacron 本身的配置。


Joc*_*lyn 6

从 Ubuntu 19.10(也许更早)开始,anacron使用计时器运行systemd

解决方案

更改执行时间的方法anacron是使用以下命令:

sudo systemctl edit --full anacron.timer
Run Code Online (Sandbox Code Playgroud)

然后修改该行:

OnCalendar=*-*-* 07..23:30
Run Code Online (Sandbox Code Playgroud)

什么不起作用

正如其他答案中所解释的,编辑/etc/crontab没有帮助。

25 7    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Run Code Online (Sandbox Code Playgroud)

操作员之前的部分||仅测试是否anacron已安装,它不执行任何操作。仅当前面的部分未成功完成(惰性操作符评估)时,后面的部分才会执行,这意味着anacron未安装。

编辑/etc/cron.d/anacron也没有帮助。

30 7-23 * * *   root    [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi
Run Code Online (Sandbox Code Playgroud)

安装 systemd 后,该情况if [ ! -d /run/systemd/system ]会阻止脚本运行。

更改执行时间的正确方法是编辑计时器,systemd如开头所述。