解决方案

解决方案

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

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

答案1

Khaled 的回答anacron是不正确的。如果安装了 (默认情况下已安装),则更改此行不会产生任何影响:

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

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

答案2

我找到了如何做到这一点。

如果您想要将行为更改为anacron在日期改变时立即执行(而不是7:30像默认行为那样等到),请执行以下操作:

gksu gedit /etc/cron.d/anacron

并添加最后两行(最后一行将每小时重新启动 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 || :

答案3

从 Ubuntu 19.10(甚至更早版本)anacron开始使用计时器运行systemd

解决方案

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

sudo systemctl edit --full anacron.timer

然后修改该行:

OnCalendar=*-*-* 07..23:30

什么不起作用

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

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

运算符之前的部分||仅测试是否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

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

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

答案4

您只需更改以下行:

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

读书

0 0    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

这将使得每日 cron 作业的执行从午夜开始。

相关内容