table of contents
- bookworm-backports 4.26.0-1~bpo12+1
- testing 4.26.0-1
- unstable 4.26.0-1
CRON(8) | System Manager's Manual | CRON(8) |
НАИМЕНОВАНИЕ¶
cron - демон для выполнения запланированных команд
ОБЗОР¶
cron [-f] [-l] [-L loglevel]
ОПИСАНИЕ¶
cron запускается автоматически из файла /etc/init.d при работе многопользовательском режиме.
ПАРАМЕТРЫ¶
- -f
- Оставаться в интерактивном режиме, не переходить в фоновый режим (режим демона).
- -l
- Включает совместимые c LSB (Linux Standard Base) имена файлов в /etc/cron.d. Этот параметр не влияет на синтаксический анализ файлов /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly или /etc/cron.monthly.
- -n
- При отправке писем указывать полное доменное имя (FQDN) в теме письма. По умолчанию cron сокращает имя хоста.
- -L loglevel
- Указывает
cron о чём
нужно
сообщать в
журналах
заданий jobs
(ошибки
регистрируются
независимо
от этого
значения)
как сумма
следующих
значений:
- 1
- регистрировать запуск всех заданий cron
- 2
- регистрировать завершение всех заданий cron
- 4
- регистрировать все неудачные задания (статус завершения не равен 0)
- 8
- регистрировать номер процесса для всех заданий cron
- По умолчанию начало всех заданий регистрируется командой jobs (1). Ведение журнала будет отключено, если значение параметра levels (уровни) равно нулю (0). При значении пятнадцать (15) будут выбраны все параметры.
ПРИМЕЧАНИЯ¶
Демон cron выполняет поиск файлов crontab в каталоге (/var/spool/cron/crontabs); эти файлы имеют те же названия, что и названия учетных записей в файле /etc/passwd). Найденные файлы crontabs загружаются в память. Обратите внимание, что в этом каталоге к подкаталогу crontabs не следует обращаться напрямую - для доступа к нему и его обновления следует использовать команду crontab.
Демон cron также читает файл /etc/crontab, который имеет несколько иной формат (смотрите crontab(5)). В Debian содержимое файла /etc/crontab настроено для запуска программ в /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly. Эта настройка специфична для Debian, смотрите, ниже, примечание в разделе СПЕЦИФИКА DEBIAN.
Кроме того, в Debian демон cron считывает файлы из каталога /etc/cron.d. Демон cron обрабатывает файлы в каталоге /etc/cron.d так же, как и файл /etc/crontab (эти файлы имеют специальный формат, т.е. содержат поле user). Однако эти файлы не зависят от файла /etc/crontab, например, они не наследуют из него настройки переменных окружающей среды. Это изменение относится только к Debian, смотрите ниже примечание в разделе СПЕЦИФИКА DEBIAN.
Как и в случае с файлом /etc/crontab, изменения в файлах каталога /etc/cron.d отслеживаются. В общем случае системному администратору не следует использовать файлы из каталога /etc/cron.d/, а следует использовать стандартный системный файл /etc/crontab.
Файл /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 с интервалом в одну минуту, просматривает все хранящиеся в подкаталоге crontabs файлы и проверяет каждую команду, чтобы определить, следует ли ее выполнить в текущую минуту. При выполнении команд любые выходные данные отправляются владельцу crontab (или пользователю, указанному в переменной окружающей среды MAILTO в crontab, если таковой существует) от владельца crontab (или с адреса электронной почты, указанного в переменной окружающей среды MAILFROM в crontab, если таковой существует). Дочерние копии cron, выполняющие эти процессы, имеют заглавные буквы в своих именах, что будет видно из системного журнала и выходных данных ps.
Кроме того, cron каждую минуту проверяет, изменилось ли время в его подкаталогах каталога spool (или изменение времени в файле /etc/crontab), и если есть изменения, то cron затем проверит изменение времени во всех файлах каталога crontabs и перезагрузит те, которых есть изменения. Таким образом, демон cron не нужно перезапускать всякий раз, когда изменяется файл crontab. Обратите внимание, что команда crontab(1) обновляет время каталога spool всякий раз, когда она изменяет файл crontab.
Специальное решение требуется тогда, когда время изменяется на менее чем на 3 часа, например, в начале и в конце летнего времени. Если время переведено вперед, то те задания, которые должны были выполняться в пропущенное время, будут выполнены вскоре после изменения. И наоборот, если время сдвинуто назад менее чем на 3 часа, то те задания, которые попадают в "повторное время", повторно выполняться не будут.
Это затрагивает только те задания, которые выполняются в определенное время (т.е. время, не указанное как @hourly или не указанное с помощью "*" в определении часа или минуты). Задания, указанные с помощью подстановочных знаков, немедленно выполняются в соответствии с новым временем.
Изменение времени более чем на 3 часа считается корректировкой времени и новое время используется немедленно.
Демон cron записывает свои действия в системный журнал "cron", а содержимое журнала можно просматривать с помощью стандартного средства syslogd(8).
СРЕДА ОКРУЖЕНИЯ¶
При настройке в /etc/default/cron в системах Debian настройка локализации переменных окружения демона cron может управляться с помощью файла /etc/environment или с помощью файла /etc/default/locale, при этом значения из последнего являются более приоритетными по отношению к первому. Эти файлы будут прочитаны и будут использованы для настройки переменных окружающей среды LANG, LC_ALL и LC_CTYPE. Затем эти переменные используются для установки кодировки почтовых сообщений, которая по умолчанию равна "C".
Это НЕ влияет на окружающую среду задач, выполняемых cron. Для получения дополнительной информации о том, как изменить окружающую среду задач, обратитесь к crontab(5).
Демон будет использовать, если это существует, определение часового пояса из файла /etc/timezone.
Переменные окружающей среды могут быть переопределены в пользовательских определениях crontab, но cron будет обрабатывать задачи только в одном часовом поясе.
СПЕЦИФИКА DEBIAN ¶
Debian вносит некоторые изменения в cron, которые изначально не были доступны. Наиболее значимыми изменениями являются:
- —
- Поддержка /etc/cron.{ежечасно, ежедневно, еженедельно, ежемесячно} с помощью файла /etc/crontab,
- —
- Поддержка каталога /etc/cron.d (каталог добавлений для пакета crontabs),
- —
- Поддержка PAM,
- —
- Поддержка SELinux,
- —
- Поддержка auditlog,
- —
- Переход на летнее время и другие изменения или исправления, связанные со временем,
- —
- SGID crontab(1) вместо SUID root,
- —
- Расположение файлов и команд, специфичных для Debian,
- —
- Конфигурация, специфичная для Debian (/etc/default/cron),
- —
- Множество других мелких функций и исправлений.
Поддержка файлов /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly обеспечивается в Debian посредством настройки по умолчанию файла /etc/crontab (смотрите пример system-wide в файле crontab(5)). По умолчанию system-wide crontab содержит четыре задачи: запускаться каждый час, каждый день, каждую неделю и каждый месяц. Каждая из этих задач будет выполнятся командой run-parts, предоставляя в качестве аргумента каждый из каталогов. Эти задачи отключаются настройкой в anacron (за исключением почасовой задачи), чтобы предотвратить конфликты между обоими демонами.
Как описано выше, файлы в этих каталогах должны пройти необходимые проверки их свойств: они должны быть исполняемыми, иметь владельцем пользователя root, быть недоступными для записи группой или кем-либо еще и символические ссылки указывающие на на эти файлы, также должны иметь владельцем пользователя root. Кроме того, имена файлов должны соответствовать требованиям к именам файлов команды run-parts: имена файлов должны полностью состоять из букв и цифр и могут содержать только знаки подчеркивания ("_") и дефисы ("-"). Любой файл, который не соответствует этим требованиям, не будет выполнен командой run-parts. Например, любой файл, содержащий точки, будет проигнорирован. Это сделано для предотвращения запуска демоном cron любых файлов, которые остаются в системе управления пакетами Debian при обработке файлов в каталоге /etc/cron.d/ в качестве файлов конфигурации (т.е. файлов, оканчивающихся на .dpkg-dist, .dpkg-orig, .dpkg-old и .dpkg-new).
Это свойство может использоваться системными администраторами и сопровождающими для включения задач, которые будут выполняться через определенные промежутки времени. Файлы, созданные пакетами в этих каталогах, должны именоваться именем пакета, который их предоставляет.
Поддержка каталога /etc/cron.d включена в сам демон cron, который обрабатывает это местоположение как каталог system-wide crontab spool. Этот каталог может содержать любой файл, определяющий задачи, в соответствии с форматом, используемым в /etc/crontab, т.е. в отличие от пользовательского каталога spool, в этих файлах в определении задач должно быть указано имя пользователя, запускающего эти задачи.
Файлы в этом каталоге должны принадлежать пользователю root, они не обязательно должны быть исполняемыми (это файлы конфигурации, такие же, как файл /etc/crontab) и они должны соответствовать тому же соглашению об именовании, которое используется в команде run-parts(8) - их наименования должны содержать только буквы верхнего и нижнего регистров, цифры, знаки подчеркивания и дефисы. Это означает, что они cannot (не должны) , содержать никаких точек. Если для параметра -l указано значение cron (этот параметр можно настроить с помощью файла /etc/default/cron, смотрите ниже), то названия файлов также должны соответствовать требованиям стандарта LSB - Linux Standard Base (точно таким же, как требованиям к параметру --lsbsysinit в команде run-parts.
Предполагаемая цель этого свойства - разрешить использование пакетов, требующих более точного управления планированием, чем это возможно в /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)
АВТОРЫ¶
Пол Викси (Paul Vixie) <paul@vix.com> является разработчиком демона cron и первоначальным разработчиком этой страницы руководства. Эта страница также была переработана для Debian Стивом Гренландом (Steve Greenland), Хавьером Фернандесом-Сангино (Javier Fernandez-Sanguino ) и Кристианом Кастнером (Christian Kastner).
ПЕРЕВОД¶
Русский перевод этой страницы руководства разработал(и) Aleksandr Felda <isk8da@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
19.04.2010 | 4th Berkeley Distribution |