3

Я еще не изменил свой /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 отличается от других строк?

1 ответ1

4

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

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

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

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

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