cron - демон для выполнения запланированных команд (Vixie Cron)
СИНТАКСИС
cron [-f] [-l] [-L loglevel] [-n fqdn] [-x debugflags]
cron [-N]
ОПИСАНИЕ
cron непосредственно вызывается systemd(1) при переходе в многопользовательские уровни.
ОПЦИИ
-f
Оставаться в режиме переднего плана, не переходить в режим демона.
-l
Включить соответствующие стандарту LSB имена для файлов в /etc/cron.d. Однако эта настройка не влияет на разбор файлов в /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly или /etc/cron.monthly.
-n fqdn
Включать FQDN в тему при отправке писем. По умолчанию cron будет сокращать имя хоста.
-N
Выполнить cron-задания немедленно и завершить работу. Эта опция полезна для выполнения тестов.
-L loglevel
Укажите cron, какую информацию о заданиях регистрировать (ошибки регистрируются независимо от этого значения) в виде суммы следующих значений:
1 будет регистрировать начало всех cron-заданий
2 будет регистрировать окончание всех cron-заданий
4 будет регистрировать все неудачные задания (код выхода != 0)
8 будет регистрировать номер процесса всех cron-заданий
По умолчанию регистрируется начало всех заданий (1). Регистрация будет отключена, если loglevel установлен в ноль (0). Значение пятнадцати (15) выберет все опции.
-x debugflags
Укажите cron, чтобы он был более многословным и выводил отладочную информацию; debugflags - это сумма следующих значений:
1 "ext": ...
2 "sch": ...
4 "proc": ...
8 "pars": ...
16 "load": ..
32 "misc": ...
64 "test": ...
128 "bit": ...
ПРИМЕЧАНИЯ
cron выполняет поиск в своей области хранения ( /var/spool/cron/crontabs/) файлов crontab (которые названы в
соответствии с учетными записями в /etc/passwd); найденные crontab загружаются в память. Обратите внимание, что к crontab в этом
каталоге нельзя получать прямой доступ - для доступа к ним и
обновления следует использовать команду [crontab]({filename}../../crontab)(1).
cron также считывает /etc/crontab, который имеет немного другой формат (см. crontab(5)). В Debian содержимое /etc/crontab предварительно настроено для запуска программ в /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly. Эта конфигурация специфична для Debian, см. примечание ниже в разделе DEBIAN SPECIFIC.
Кроме того, в Debian cron считывает файлы в каталоге /etc/cron.d. cron рассматривает файлы в /etc/cron.d так же, как и файл /etc/crontab (они следуют специальному формату этого файла, т.е. они включают поле пользователя). Однако они независимы от /etc/crontab: например, они не наследуют настройки переменных среды из него. Это изменение специфично для Debian, см. примечание ниже в разделе DEBIAN SPECIFIC.
Как и /etc/crontab, файлы в каталоге /etc/cron.d отслеживаются на предмет изменений. Системный администратор может создавать cron-задания в /etc/cron.d/ с именами файлов, такими как "local" или "local-foo".
Файлы в /etc/crontab и /etc/cron.d должны принадлежать пользователю root и не должны быть доступны для записи группам других пользователей. В отличие от каталога spool, файлы в /etc/cron.d или в каталогах /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly также могут быть символическими ссылками, при условии, что и сама символическая ссылка, и файл, на который она указывает, принадлежат пользователю root. Файлы в /etc/cron.d не обязательно должны быть исполняемыми, в то время как файлы в /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly должны быть исполняемыми, поскольку они запускаются с помощью run-parts (см. run-parts(8) для получения дополнительной информации).
Cron просыпается каждую минуту, проверяет все хранящиеся crontab-файлы и для каждой команды проверяет, нужно ли ее запускать в текущую минуту. При выполнении команд любой вывод отправляется по почте владельцу crontab-файла (или пользователю, указанному в переменной среды MAILTO в crontab-файле, если таковая существует) от имени владельца crontab-файла (или из адреса электронной почты, указанного в переменной среды MAILFROM в crontab-файле, если таковая существует). Имена копий cron, выполняющих эти процессы, приводятся к верхнему регистру, что будет видно в syslog и в выводе [ps]({filename}../../ps)(1).
Кроме того, cron каждую минуту проверяет, изменилось ли время последнего изменения (modtime) каталога spool или файла /etc/crontab, и если изменилось, то cron проверяет время последнего изменения всех crontab-файлов и перезагружает те, которые изменились. Таким образом, cron не нужно перезапускать каждый раз при изменении файла crontab. Следует отметить, что команда [crontab]({filename}../../crontab)(1) обновляет время последнего изменения каталога spool каждый раз, когда изменяется crontab-файл.
Существуют особые соображения, когда время корректируется менее чем на 3 часа, например, в начале и в конце летнего времени. Если время сдвинулось вперед, задания, которые должны были быть выполнены в пропущенное время, будут выполнены вскоре после изменения. И наоборот, если время сдвинулось назад менее чем на 3 часа, задания, попадающие в повторное время, не будут повторно выполнены.
Влияют только задания, которые выполняются в определенное время (а не указаны как @hourly или с использованием * в поле часа или минуты). Задания, указанные с использованием подстановочных знаков, выполняются сразу на основе нового времени.
Корректировки времени более чем на 3 часа рассматриваются как исправления времени, и новое время используется немедленно.
Cron записывает свои действия в журнал syslog с именем cron, и ведение журнала может контролироваться с помощью стандартной программы syslogd(8).
ПЕРЕМЕННЫЕ СРЕДЫ
Если в файле /etc/default/cron в системах Debian это настроено, настройки локализации демона cron можно управлять с помощью файла /etc/environment или с помощью файла /etc/default/locale, при этом значения из последнего файла перезаписывают значения из первого. Эти файлы читаются и используются для настройки переменных среды LANG, LC_ALL и LC_CTYPE. Эти переменные затем используются для установки кодировки почты, которая по умолчанию равна C.
Это НЕ влияет на окружение задач, выполняемых в cron. Для получения дополнительной информации о том, как изменить окружение задач, обратитесь к crontab(5).
Демон будет использовать, если это возможно, определение из /etc/localtime для часового пояса.
Окружение можно переопределить в определениях crontab пользователя, но cron будет обрабатывать задачи только в одном часовом поясе.
СПЕЦИФИКА ДЛЯ DEBIAN
Debian вносит некоторые изменения в cron, которые изначально не были доступны в основной версии. Наиболее значительные изменения, внесенные в Debian, включают:
Поддержка /etc/cron.{hourly,daily,weekly,monthly} через /etc/crontab,
Поддержка /etc/cron.d (каталог для добавления системных crontab),
Поддержка PAM,
Поддержка SELinux,
Поддержка auditlog,
Поддержка DST и другие изменения/исправления, связанные со временем,
SGID [crontab]({filename}../../crontab)(1) вместо SUID root,
Специфичные для Debian местоположения и команды файлов,
Специфичная для Debian конфигурация (/etc/default/cron),
Множество других небольших функций и исправлений.
Поддержка /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly предоставляется в Debian через настройку по умолчанию файла /etc/crontab (см. пример системного crontab в crontab(5)). В системном crontab по умолчанию содержатся четыре задачи: выполнение каждый час, каждый день, каждую неделю и каждый месяц. Каждая из этих задач будет выполнять run-parts(8), передавая каждый из этих каталогов в качестве аргумента. Эти задачи отключаются, если установлен anacron(8) (за исключением hourly-задачи), чтобы предотвратить конфликты между двумя демонами.
Как описано выше, файлы в этих каталогах должны пройти некоторые проверки, включая следующее: быть исполняемыми, принадлежать пользователю root, не быть доступными для записи для группы или других пользователей и, если это символические ссылки, указывать на файлы, принадлежащие пользователю root. Кроме того, имена файлов должны соответствовать требованиям к именам файлов run-parts(8): они должны состоять только из букв, цифр и могут содержать только специальные символы подчеркивания ('_') и дефиса ('-'). Любой файл, не соответствующий этим требованиям, не будет выполнен run-parts(8). Например, любой файл, содержащий точки, будет проигнорирован. Это сделано для того, чтобы cron не выполнял файлы, оставленные системой управления пакетами Debian при обработке файлов в /etc/cron.d/ в качестве файлов конфигурации (т. е. файлы, заканчивающиеся на .dpkg-dist, .dpkg-orig, .dpkg-old и .dpkg-new).
Эта функция может использоваться системными администраторами и пакетами для включения задач, которые будут выполняться через определенные интервалы. Файлы, создаваемые пакетами в этих каталогах, должны быть названы в честь пакета, который их предоставляет.
Поддержка /etc/cron.d включена в сам демон cron, который обрабатывает это местоположение как системный crontab. В этом каталоге может содержаться любой файл, определяющий задачи в формате, используемом в /etc/crontab, т. е. в отличие от пользовательского crontab, этим файлам необходимо указывать имя пользователя, от имени которого будет выполняться задача, в определении задачи.
Файлы в этом каталоге должны принадлежать пользователю root, не должны быть исполняемыми (это файлы конфигурации, как и /etc/crontab) и должны соответствовать той же схеме именования, что и используется в run-parts(8): они должны состоять исключительно из букв верхнего и нижнего регистра, цифр, символов подчеркивания и дефисов. Это означает, что они не могут содержать точек. Если для cron указана опция -l (эту опцию можно настроить в /etc/default/cron, см. ниже), то они должны соответствовать спецификации пространства имен LSB, точно так же, как в опции --lsbsysinit в run-parts(8).
Предполагаемая цель этой функции состоит в том, чтобы позволить пакетам, которым требуется более точный контроль над планированием, чем в каталогах /etc/cron.{hourly,daily,weekly,monthly}, добавлять файл crontab в /etc/cron.d. Такие файлы должны быть названы в честь пакета, который их предоставляет.
Кроме того, конфигурация по умолчанию для cron управляется файлом /etc/default/cron, который считывается скриптом init.d, запускающим демон cron. Этот файл определяет, будет ли cron считывать системные переменные окружения и позволяет добавлять дополнительные опции к программе cron перед ее выполнением, либо для настройки ее ведения журналов, либо для определения того, как она будет обрабатывать файлы в /etc/cron.d.
ССЫЛКИ
crontab(1), crontab(5), run-parts(8)
АВТОРЫ
Пол Викси <_> Написал эту страницу руководства (1994).
Стив Гринланд <_> Поддерживал пакет (1996-2005).
Хавьер Фернандес-Сангвиньо Пена <_> Поддерживал пакет (2005-2014).
Кристиан Кастнер <_> Поддерживал пакет (2010-2016).
Жорж Хазнадар <_> Поддерживал пакет (2022-2024).
АВТОРСКИЕ ПРАВА
Авторское право © 1994 Пол Викси
Распространяйте свободно, за исключением: не удаляйте мое имя из исходного кода или документации (не присваивайте себе заслуги за мою работу), отмечайте свои изменения (не обвиняйте меня в возможных ошибках), не изменяйте и не удаляйте это уведомление. Может продаваться, если предоставляется покупателю возможность собрать исходный код. Не предоставляется никаких гарантий, явных или подразумеваемых; используйте это программное обеспечение на свой страх и риск, ответственность за любой ущерб, причиненный кому-либо в результате использования этого программного обеспечения, полностью лежит на пользователе.
С 1994 года в эту страницу руководства было внесено много изменений, авторство которых принадлежит разработчикам Debian, которые поддерживали cron(TM); выше приведен краткий список, более подробную информацию можно найти в файле /usr/share/doc/cron/copyright.