3.9.11.2 Планировщик заданий crontab
Скачать документ Окружение
- Версия РЕД ОС: 8
- Конфигурация: Рабочая станция
Crontab - таблицы, управляющие работой службы cron. Файл содержит инструкции службы cron в общей форме: запускать указанную команду в заданное время и в заданные дни. На компьютере обычно имеются общесистемный файл (/etc/crontab) и индивидуальные файлы (/var/spool/cron/) для пользователей системы. Таким образом, команды в файле будут выполняться с правами этих пользователей или, в случае общесистемного файла, с правами пользователя, указанного в командной строке при запуске службы. У служб Uucp и News обычно есть свои собственные crontab, устраняющие необходимость в явном запуске su в рамках команды cron.
Вы можете подробнее ознакомиться с работой службы cron, просмотрев наши обучающие видео:
на RuTube — Планировщик задач в РЕД ОС. Cron;
в Яндекс.Дзен — Планировщик задач в РЕД ОС. Cron;
в VK Видео — Планировщик задач в РЕД ОС. Cron.
На наших каналах вы также сможете найти много другой полезной информации.
Пустые строки, ведущие пробелы и символы табуляции игнорируются. Строки, начинающиеся с символа «#», считаются комментариями и игнорируются. Заметьте, что комментарии не допускаются в тех же строках, где расположены команды cron, так как они будут распознаны как части команды. По этой же причине комментарии не разрешены в строках, задающих переменные среды.
Строка-директива представляет собой либо задание переменной среды, либо команду cron.
Задание переменной среды:
Можно определять среду (набор переменных среды), в которой будет выполняться команда. Задание переменной среды осуществляется в следующей форме:
<имя_переменной> = <значение>
где пробелы вокруг знака равенства («=») не обязательны, и любые пробелы после будут использованы как часть значения переменной . Строка может быть заключена в кавычки (одинарные или двойные) для возможности сохранения пробелов в начале и конце.
Несколько переменных среды устанавливаются автоматически службой cron. SHELL устанавливается в /bin/sh, а LOGNAME и HOME определяются по файлу /etc/passwd (в соответствии с владельцем crontab). Значения переменных HOME и SHELL можно переопределить директивами crontab.
В дополнение к LOGNAME, HOME и SHELL cron может использовать переменную MAILTO в случаях, если в данном crontab была указана отправка почты. Если MAILTO определена (и не пуста), электронная почта отправляется указанному в переменной пользователю. Если MAILTO определена, но пустая (MAILTO = ' '), электронная почта отправляться не будет. В противном случае, почта посылается владельцу crontab. Эта переменная полезна при запуске команд от псевдопользователей, для которых не определены почтовые адреса в системе.
Команды cron:
Существует две конфигурации cron: системная и пользовательская. Общесистемная настройка crontab работает безусловно для всех пользователей РЕД ОС. Пользовательская настройка является дополнительной и выполняется в сессиях пользователей.
Для редактирования файла необходимо ввести команду:crontab -e
Для просмотра содержимого расписания:
crontab -l
Каждая стока в системной конфигурации cron, расположенной в каталоге /etc, состоит из шести полей и команды:
<минута> <час> <число> <месяц> <день_недели> <пользователь> <команда>
Каждая строка в пользовательской конфигурации cron, расположенной в домашнем каталоге пользователя, состоит из пяти полей и команды:
<минута> <час> <число> <месяц> <день_недели> <команда>
Поля отделяются друг от друга пробелами или символами табуляции. Команда может состоять из нескольких полей. Допустимые значения полей:
Поле | Допустимые значения |
<минута> | * или 0-59 |
<час> | * или 0-23 |
<число> | * или 1-31 |
<месяц> | *, 1-12 или имя месяца (см. ниже) |
<день_недели> | *, 0-7 или имя дня (воскресенье - это 0 и 7) |
<пользователь> | имя существующего пользователя |
<команда> | строка |
Допустимо указание нескольких значений (и диапазонов через тире) через запятую. Примеры:
' '1 , 2, 5 , 9' ' ' '0-4, 8-12' '.
Диапазон указывается как два числа, разделенных дефисом. Указываемые числа включаются в диапазон. Например, значение поля <час> 8-11 приведёт к выполнению команды в 8, 9, 10 и 11 часов.
При указании диапазона можно пропускать некоторые его значения, указав шаг в форме /<число>. Например: «0-23/2» для поля означает запуск команды через два часа (по стандарту V7 пришлось бы указывать «0,2,4,6,8,10,12,14,16,18,20,22»). Шаг можно указывать также после звёздочки: «каждые два часа» соответствует значению «*/2».
Звёздочка («*») без шага соответствует полному диапазону значений.
Для задания полей <месяц> и <день_недели> и можно использовать имена. Указывайте первые три буквы нужного дня или месяца на английском, регистр букв не имеет значения. Диапазоны или списки имён не разрешены.
Поле <команда> (остаток строки) определяет запускаемую по расписанию команду. Вся оставшаяся часть строки до символа перевода строки или символа «%», будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab. Знак процента («%») в команде (если он не экранирован обратной косой чертой («\»)) будет соответствовать символу перевода строки и все данные после первого «%» будут посланы для команды на стандартный ввод.
Служба cron запускает команды, когда значения полей <минута>, <час>, <месяц> и хотя бы одно из полей <число> и <день_недели>, совпадают с текущим временем (см. замечание ниже). Служба cron сверяет директивы с текущим временем раз в минуту.
День выполнения команды может быть задан в двух полях - <число> и <день_недели>. Если оба поля определены (т.е. не равны «*»), то команда будет запущена, когда любое поле совпадёт с текущим временем. Например, запись:
30 4 1,15 * 5
приведёт к выполнении команды в 4:30 по полуночи первого и пятнадцатого числа каждого месяца, плюс в каждую пятницу.
Вместо первых пяти полей допустимо указание одного из восьми специальных триггеров:
Строка | Значение |
@reboot | Выполнить команду один раз, при запуске cron(8). |
@yearly | Выполнять команду каждое 1 января, "0 0 1 1*" |
@annually | (эквивалентно @yearly). |
@monthly | Выполнять команду в начале каждого месяца, "0 0 1 * *" |
@weekly | Выполнять команду каждое воскресенье, "0 0 * * 0". |
@daily | Выполнять команду в полночь, "0 0 * * *". |
@midnight | (эквивалентно @daily). |
@hourly | Выполнять команду раз в час, "0 * * * *". |
Дата последнего изменения: 24.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.