我已设置每日 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 作业的执行从午夜开始。