在 Gentoo 上的 cronie 中使用 anacron——无法运行?

在 Gentoo 上的 cronie 中使用 anacron——无法运行?

这是已安装的 Gentoo 系统上的系统 crontab cronie,并anacron启用了使用标志:

59  *  * * *    root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.hourly
9  3  * * *     root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.daily
19 4  * * 6     root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.weekly
29 5  1 * *     root    [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.monthly
*/10  *  * * *  root    [ ! -x /etc/cron.hourly/0anacron ] && { test -x /usr/sbin/run-crons && /usr/sbin/run-crons ; }

它确保/etc/cron.hourly/0anacron在运行任何内容之前不存在,因为 anacron 将执行 cron.* 脚本。它是:

 # ls -la /etc/cron.hourly/0anacron 
 -rwxr-x--- 1 root root 448 May 11 23:46 /etc/cron.hourly/0anacron

好的,那么 anacron 如何运行?它的辅助脚本位于 cron.hourly 中,但如果辅助脚本存在,则 cron.hourly 中的任何内容都不会执行。

我找不到任何证据证明它曾经运行过。这是一个先有鸡还是先有蛋的问题。

答案1

据我所知,cronie 的 anacron 是由 cron 通过执行 触发的/etc/cron.hourly/0anacron。但由于 crontab 中的第 1 行和第 5 行(仅在 0anacron 不可执行的情况下运行),这种情况永远不会发生。

我通过更改/etc/crontab为以下内容解决了这个问题

59  *  * * *      root  run-parts /etc/cron.hourly
#59  *  * * *     root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.hourly
#9  3  * * *      root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.daily
#19 4  * * 6      root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.weekly
#29 5  1 * *      root  [ ! -x /etc/cron.hourly/0anacron ] && rm -f /var/spool/cron/lastrun/cron.monthly
#*/10  *  * * * root    [ ! -x /etc/cron.hourly/0anacron ] && { test -x /usr/sbin/run-crons && /usr/sbin/run-crons ; }

第 1 行确保中的脚本/etc/cron.hourly每小时由常规 cron 执行一次(不检查 lastrun 文件)。

我评论删除了每日、每周和每月的 lastrun 文件,因为它们是通过 anacron 运行的(在 中定义/etc/anacrontab)。

相关内容