
Я довольно хорошо понимаю, как работает cron/anacron на Linux. У меня такой вопрос:
- anacron запускается при входе в систему и проверяет, прошло ли больше суток с момента
/etc/cron.daily
запуска скриптов - anacron запускает скрипты в
/etc/cron.daily
и обновляет временную метку в/var/spool/anacron/cron.daily
- выходы анакрона
- компьютер остается включенным более 24 часов
- cron запускается и обнаруживает совпадение по времени для cron.daily
- cron ничего не делает с тех пор
test -x anacrontab" == True
Если мой компьютер работает более 24 часов, как cron запускает скрипты в cron.daily (это дистрибутив на базе Debian)?
по умолчанию /etc/crontab
(запускаемый каждую минуту) проверяет наличие (точнее, бита -x) /usr/bin/anacron
и игнорирует /etc/cron.daily
папку, если находит ее, но, похоже, не перезапускает anacron для выполнения работы.
РЕДАКТИРОВАТЬ:
Итак, cron ДЕЙСТВИТЕЛЬНО запускает anacron из /etc/cron.d
папки, но только если компьютер включен и залогинен в 7:30 утра каждый день. Немного поиграв с таблицами, я пришел к выводу, что скрипты в нем /etc/cron.daily
будут запускаться с интервалом от 1 минуты до 31,5 часов.
Бывший:
Сценарий 1:
- войти в 23:59 5/23/2021
- Если предположить, что временная метка anacron
/etc/cron.daily
старше 23.05.2021, anacron запускает все скрипты/etc/cron.daily
и обновляет временную метку до 23.05.2021. - выйти
- войдите снова в 12:00 утра 24.05.2021 г.
- anacron видит, что последний запуск был 23.05.2021, а сейчас 24.05.2021, поэтому anacron запускает все скрипты в
/etc/cron.daily
- прошедшее время между запусками: 1 минута
Сценарий 2:
- войти в 12:00 утра 23.05.2021
- Если предположить, что временная метка anacron
/etc/cron.daily
старше 23.05.2021, anacron запускает все скрипты/etc/cron.daily
и обновляет временную метку до 23.05.2021. - компьютер остается включенным и находится в системе до 7:30 утра 23.05.2021 г.
- cron запускает anacron из своего файла crontab в
/etc/cron.d
- так как временная метка — 23.05.2021, ничего не происходит
- компьютер остается включенным и находится в системе до 7:30 утра 24.05.2021 г.
- cron запускает anacron из своего файла crontab в
/etc/cron.d
- anacron видит, что последний запуск был 23.05.2021, а сейчас 24.05.2021, поэтому anacron запускает все скрипты в
/etc/cron.daily
- Прошедшее время между запусками: 31,5 часа
решение1
Все системные файлы /etc/cron.daily
, /etc/cron.weekly
и т.д. включают запись для запускаанакронкоторый в свою очередь включает запись для запускахрон. /etc/crontab
включает записи длячасти запускатак чтоанакронлибо управляетсячасти запускаили похрон.
Другой файл, который следует рассмотреть, это /etc/anacrontab
файл, который может переопределить некоторые эффекты/etc/crontab
Важная системахронсвязанный файл — это /etc/cron.daily/logrotate
скрипт, используемый для инициирования обработки ротации журналов.
Обычный пользователькронтабывыполняются независимо от системных заданий cron.
Обратите внимание, что /etc/crontab
процесс не выполняется каждую минуту — его активность определяется различными спецификациями crontab.