CRON(8)

НАИМЕНОВАНИЕ
crond - демон для выполнения запланированных команд

ОБЗОР
crond [-c | -h | -i | -n | -p | -P | -s | -m<mailcommand>]
crond -x [ext,sch,proc,pars,load,misc,test,bit]
crond -V

ОПИСАНИЕ
Если используются классические скрипты sysvinit, то Cron запускается с помощью /etc/rc.d/init.d или /etc/init.d. Если используется служба systemd, то файл устанавливается в каталог /lib/systemd/system/crond.service и демон запускается командой systemctl start crond.service. Он выдает возвращаемое значение немедленно, таким образом, нет необходимости запускать его с параметром "&".

Cron выполняет поиск файлов crontab в каталоге /var/spool/cron , эти файлы имеют тоже название, что и учетные записи в файле /etc/passwd; Найденные в crontab записи загружаются в память. Cron также выполняет поиск любых файлов в каталоге /etc/cron.d; эти файлы имеют другой формат (смотрите crontab(5)). Cron проверяет все сохраненные в crontabs записи и каждое задание и определяет нужно ли запустить задание в текущую минуту. При выполнении команд любой вывод отправляется по почте владельцу crontab (или пользователю, указанному в переменной окружения MAILTO в crontab, если таковые существует). Любые выходные данные задания также могут быть отправлены в системный журнал с помощью параметра -s.

Существуют два способа проверки изменений в файлах crontables. Первый способ заключается в проверке времени изменения файла. Второй способ заключается в использовании поддержки уведомлений. Использование уведомлений регистрируется в журнале /var/log/cron после запуска демона. Служба поддержки уведомлений проверяет наличие изменений во всех файлах crontables и обращается к жесткому диску только при обнаружении изменений.

При использовании параметра modtime Cron каждую минуту проверяет время обновления своих файлов crontables на наличие изменений и перезагружает измененные файлы crontables. Нет необходимости перезапускать Cron после того, как некоторые из файлов crontables были изменены. Параметр modtime также используется, когда уведомление не может быть инициализировано.

Cron проверяет следующие файлы и каталоги:

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

/etc/cron.d/
    каталог, содержащий системные задания демона cron, сохраненные для различных пользователей.

/var/spool/cron
    каталог, содержащий пользовательские файлы crontables, созданные с помощью команды crontab.

Обратите внимание, что команда crontab(1) обновляет время изменения каталога spool всякий раз, когда она изменяет файл crontab.

  Переход на летнее время и другие временные изменения
Изменения местного времени продолжительностью менее трех часов, например, вызванные переходом на летнее время, обрабатываются специальным образом. Это относится только к заданиям, которые выполняются в определенное время, и к заданиям, которые выполняются с периодичностью более одного часа. Задания, которые выполняются чаще, выполняются по обычному расписанию.

Если время было переведено на один час вперед, то те задания, которые должны были выполняться в течение пропущенного интервала, будут выполнены немедленно. И наоборот, если время было переведено назад, то повторное выполнение одного и того же задания не произойдет.

Изменение времени более чем на 3 часа считается корректировкой времени или часового пояса, а новое время используется немедленно.

В файлах crontables можно использовать разные часовые пояса. Дополнительную информацию смотрите в crontab(5).

  Управление доступом PAM
Cron поддерживает управление доступом с помощью PAM, если в системе установлен PAM. Дополнительные сведения смотрите в pam(8). Файл конфигурации PAM для crond расположен в /etc/pam.d/crond. Демон загружает переменные окружения PAM из модуля pam_env. Это можно изменить, если определить специальные настройки в соответствующем файле crontab.

ПАРАМЕТРЫ

-h  Вывести краткое справочное сообщение и завершить работу.

-i  Отключить поддержку уведомлений.

-m  Этот параметр позволяет вам указать команду оболочки, которая будет использоваться для отправки почтового сообщения Cron вместо использования программы sendmail(8). Эта команда должна принимать полностью отформатированное почтовое сообщение (с заголовками) при стандартном вводе и отправлять его в виде почтового сообщения получателям, указанным в заголовках почты. Указание строки off (т.е. crond -m off) отключит отправку почты.

-n  Указывает демону запускаться в интерактивном режиме. Это может быть полезно при запуске из init. Когда используется этот параметр, тогда необходимо изменить настройки pam. Файл /etc/pam.d/crond не должен включать модуль pam_loginuid.so.

-f  то же, что и -n, но согласуется с другими реализациями crond.

-p  Позволяет Cron принимать любые пользовательские настройки crontables.

-P  Не указывать PATH. Вместо этого PATH наследуется из переменных окружающей среды.

-c  Этот параметр включает поддержку кластеров, как описано ниже.

-s  Этот параметр заставит Cron отправлять результаты выполнения задания в системный журнал syslog(3). Это может быть полезно, если в вашей системе не установлена почтовая служба sendmail(8) или если почтовая служба отключена.

-x  Этот параметр позволяет вам устанавливать флаги отладки.

-V  Вывести версию и завершить работу.

СИГНАЛЫ
Когда будет получен сигнал SIGHUP, тогда демон Cron закроет и снова откроет свой файл журнала. Это может быть полезным в сценариях, которые изменяют и обновляют файлы журнала. Понятно, что это не имеет значения, если Cron был создан для использования syslog(3).

ПОДДЕРЖКА КЛАСТЕРОВ
В этой версии Cron можно пользоваться примонтированным к сети общим каталогом кластера хостов /var/spool/cron, в crontab которого можно указать один из хостов кластера, предназначенный для запуска заданий в любой момент времени. Это можно сделать если запустить Cron с параметром -c и определить в файле /var/spool/cron/.cron.hostname только одну строку, которая содержит имя хоста, на котором любой другой хост кластера должен выполнять задания. Если этот файл не существует или имя хоста в нем не совпадает с именем, возвращаемым функцией gethostname(2), то все файлы crontab в этом каталоге игнорируются. Это не влияет на задания cron, указанные в файле /etc/crontab или в файлах каталога /etc/cron.d. Эти файлы всегда запускаются и считаются файлами данного хоста.

Вместо того чтобы непосредственно редактировать файл /var/spool/cron/.cron.hostname следует использовать, для указания хоста, параметр -n в crontab(1).

Вы должны будете обеспечить синхронизацию времени на всех хостах и на файловом сервере, на котором расположен общий каталог crontab, например, с помощью демона ntpd(8), в противном случае результаты могут оказаться весьма непредсказуемыми.

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

ПРЕДОСТЕРЕЖЕНИЯ
Все файлы crontab должны быть обычными файлами или символическими ссылками на обычные файлы, они не должны быть исполняемыми или доступными для записи кем-либо, кроме владельца. Это требование можно отменить, используя параметр -p в командной строке crond. Если используется поддержка уведомлений, то изменения в crontabs с символическими ссылками не будут автоматически обнаружены демоном cron. Демон cron должен получить сигнал SIGHUP для перезагрузки crontabs. Это ограничение уведомлений API.

Если служба sendmail не установлена, то вместо почты будут использоваться данные системного журнала.

СМОТРИТЕ ТАКЖЕ
crontab(1), crontab(5), inotify(7), pam(8)

АВТОРЫ
Paul Vixie (vixie@isc.org)
Marcela Mašláňová (mmaslano@redhat.com)
Colin Dean (colin@colin-dean.org)
Tomáš Mráz (tmraz@fedoraproject.org)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Aleksandr Felda <isk8da@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).