cron -- программа демон, планировщик задач

     cron [-j jitter] [-J rootjitter] [-m mailto] [-s] [-o]
                [-x debugflag[,...]]

Cron является стандартной программой планировщиком заданий в Unix системах, в том числе и FreeBSD. Планировщик cron запускается из файлов: /etc/rc или /etc/rc.local. Поскольку программа cron запускается в качестве демона, сразу возвращая управление системе, нет необходимосте запускать его вручную, с суффиксом &.

После старта, cron производит поиск персональных crontab файлов, в папке /var/cron/tabs, соответствующих учетным записям пользователей, из файла /etc/passwd, обнаруженные файлы загружаются в память. Кроме того производится поиск и загрузка общесистемного crontab файла /etc/crontab.

Планировщик заданий cron, работает в фоновом режиме, просыпаясь каждую минуту и проверяя все загруженные crontab файлы, на наличие команд, которые нужно выполнить в текущую минуту. Прежде чем запускать команду из файла crontab, принадлежащего какой-либо учетной записи, cron проверяет статус данной учетной записи с помощью pam(3), игнорируя команды, если аккаунт пользователя заблокирован или просрочен. Команды из общесистемного файла /etc/crontab выполняются всегда. При выполнении команд, вывод отправляется на почтовый адрес владельца данной таблицы crontab ( или пользователю прописанному в переменной окружения MAILTO, если таковая присутствует ).

Дополнительно, каждую минуту, планировщик cron проверяет время модификации буферного каталога и файла /etc/crontab, если время изменилось, cron проверит время на всех файлах crontab и перезагрузит те которые были изменены. Таким образом не нужно перезапускать cron, всякий раз, когда какая-нибудь из таблиц crontab была измененв. Обратите внимание, КОМАНДА crontab(1) меняет время модификации буферного каталога, во время изменения файлов crontab.

Опции cron:

-j jitter
Устанавливает так называемый "разброс" времени. Перед выполнение очередной команды, cron будет засыпать на случайное количество секунд, лежащее в диапазоне между 0 и jitter. Данная опция не затрагивает задания пользователя root ( смотрите -J ). Значение должно быть от 0 до 60 включительно. Значение по умолчанию 0, то есть отключено.

Данная опция помогает снизить чрезмерную нагрузку, возникающую в случае выполнения большого количества запланированных заданий cron, запускаемых одновременно, например в первую минуту каждого часа.

-J rootjitter
Устанавливает "разброс" времени для планировщика заданий пользователя root, в остальном работает подобно опции -j.
-m mailto
Переопределяет получателя по умолчанию для извещений cron. Каждый crontab(5) без явно установленной переменной MAILTO, будет отправлять письма на установленный в этой опции адрес. Отправка почты будет отключена, если установлено значение '' или "", то есть пустая строка.
-s
Включить специальный обработчик для ситуации, когда изменяется GMT смещение для локальной временной зоны, например при переходе с обычного времени на летнее.

При запуске заданий cron, изменение GMT смещения, интуитивно ожидаемо. Если задание попадает в промежуток времени который пропадает, например во время перехода на летнее время, либо наоборот дублируется, во время обратного перехода, ситуация обрабатывается по одному из двух возможных вариантов:

Первый случай, когда временной интервал заданий выполняемых ежечасно, наклвдывается на пропадающий или дублирующийся интервал. Другими словами, если задание запускается в течении часа до изменения GMT смещения ( и планировщик cron не будет перезапущен в этот промежуток времени млм изменен crontab ) или в течении часа после изменения GMT смещения. Cron отработает как обычно, пропускает, пропущенное время или запускается в добавленное.

Второй случай, для заданий выполняемых реже. Они будут выполнены один раз, не будут пропущены или запущены дважды ( если cron не перезапущен и пользовательский crontab не изменен ). Если временной интервал пропадает во время GMT смещения, задания будут выполнены в том-же абсолютном моменте времени как если-бы они были в старом часовом поясе.

-o
Отключает специальную обработку изменения GMT смещения локальной временной зоны, для совместимости со старым поведением планировщика заданий по умолчанию. Если определены опции -o и -s, будет учтена, идущая последней.
-x debugflag[,...]
Включить запись отладочной информации в поток стандартного вывода. Один или более отладочных флагов, разделенных запятой, должны быть опредены.

  • bit не используется
  • ext сделать другой отладочный флаг более информативным
  • load быть более информативным при загрузке crontab файлов
  • misc быть более информативным при различных разовых событиях
  • pars быть более информативным при парсинге каждой строки crontab файла
  • proc быть более информативным выводя статус процесса и всех его потомков
  • sch быть более информативным в повторных выполнений заданий
  • test отследить процесс запуска но не производить при этом никаких действий

Рабочие файлы:

  • /etc/crontab — Общесистемный crontab файл
  • /etc/pam.d/cron — Конфигурационный файл pam.conf(5)
  • /var/cron/tabs — Директория с персональными crontab файлами

Смотрите так-же:
crontab(1), pam(3), crontab(5), pam.conf(5)