Почему строка `cron.hourly` в` / etc / crontab` единственная без `test -x / usr / sbin / anacron`?

669
Jayjayyy

Я еще не изменил свой /etc/crontab. Это по-прежнему содержимое по умолчанию, которое также является содержимым по умолчанию для многих дистрибутивов Linux:

# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do.  SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 

Почему cron.hourlyлиния единственная без test -x /usr/sbin/anacron? Почему не является cron.hourlyв anacrontabтоже?


Обновить:

Как прокомментировал @JakeGould, ответ на вопрос «Что именно делает test -x /usr/sbin/anacron?» можно найти по адресу https://unix.stackexchange.com/questions/26088/etc-crontab-what-does-test-x-stand-for, например. Но главный вопрос остается открытым: почему процедура cron.hourlyотличается от других строк?

3
`-x` проверяет исполняемый файл. Tomasz 5 лет назад 0
Некоторые [более подробно здесь] (https://unix.stackexchange.com/q/26088/30848). Но почему cron.hourly не нуждается в этом вопросе? JakeGould 5 лет назад 1

1 ответ на вопрос

5
Austin Hemmelgarn

Поскольку наименьший период, над которым Anacron предназначен для работы, - ежедневный, он не может использоваться для управления почасовыми заданиями cron.

Anacron предназначен для работы в очень специфических случаях, а именно для обеспечения того, чтобы нечасто запускаемые задания cron по-прежнему запускались в системах, которые не всегда включены. В действительности почти нет ничего, что нужно запускать ежечасно и запускать немедленно, если пропущен почасовой прогон. Учитывая это, разработчики Anacron решили разрешить значительно более простой (и также более надежный) код, который не учитывает время выполнения предыдущих задач, а только дату их выполнения. В свою очередь, это означает, что Anacron предназначен для работы в течение дней, а не часов или минут, как это делает большинство реализаций cron, и поэтому его нельзя использовать для обработки почасовых заданий.

На самом деле, Anacron на самом деле тоже не выполняет никакого планирования, поэтому эти записи в вас /etc/crontabесть, без них anacron не запустится (или может запуститься только при запуске), поэтому они там, чтобы убедиться в этом работает, даже если система включена в течение длительного времени.

Что касается часовых заданий в целом, вы, вероятно, обнаружите, /etc/cron.hourlyчто в вашей системе пусто. Большинство классических применений для этого (или даже более частые задания cron) были в тех случаях, когда вы проверяли, что что-то было обновлено, или проверяли состояние некоторого оборудования или программного обеспечения с помощью опроса. Оба варианта использования лучше обслуживаются с помощью моделей, управляемых событиями, а не моделей опроса, и, таким образом, обычно переносятся на такие схемы.

Ницца. Отличный ответ! JakeGould 5 лет назад 0

Похожие вопросы