1

Это системный crontab в системе Gentoo с установленным 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

Итак, как работает анакрон? Это вспомогательный скрипт в cron.hourly, но ничего в cron.hourly не выполняется, если присутствует вспомогательный скрипт.

Я не могу найти никаких доказательств того, что он когда-либо работал. Это курица и яйцо.

1 ответ1

3

Насколько я понимаю, cronie запускает cron, выполняя /etc/cron.hourly/0anacron . Но этого никогда не происходит из-за строк 1 и 5 из crontab (они запускаются только в том случае, если 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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .