9.4.2. Диспетчер расписаний — демон cron
9.4.2. Диспетчер расписаний — демон cron
Этот демон запускается во время инициализации системы (сценарий /etc/init.d/crond), читает свои конфигурационные файлы и переходит в режим ожидания. Раз в минуту демон просыпается, проверяет дату последнего изменения конфигурационных файлов, перечитывает те из них, которые оказались изменены, и выполняет задания, назначенные на данную минуту.
В конфигурационных файлах, называемых еще crontab-файлами, хранятся расписания: в каталоге /var/spool/cron — по одному на зарегистрированного пользователя и /etc/crontab — суперпользовательский. Выполнив задание, демон cron отправляет почтовое сообщение о результатах выполнения владельцу crontab-файла или пользователю, указанному в переменной MAILTO этого файла.
Управление файлами расписаний
Пользовательские crontab-файлы не предназначены для ручного редактирования, Для управления ими служит команда crontab. Список тех, кому разрешено ее запускать, находится в файле /etc/cron.allow. Если этот файл отсутствует, то запускать crontab могут все, кроме тех, кто перечислен в файле /etc/cron.deny. Если отсутствуют оба файла, то запускать команду может только суперпользователь.
Формат команды:
crontab [-u <логин_имя> ] [ <файл> | [-l] | [-r] | [-е] | [-i]]
Если указан файл, то этим файлом замещается crontab-файл указанного пользователя; если нет, то crontab-файл редактируется на месте. Ключи означают следующее:
? -l — вывести на консоль содержимое файла расписания;
? -r — удалить файл расписания;
? -i — удалить, предварительно переспросив;
? -e — редактировать файл расписания, то есть открыть его в редакторе, указанном в переменной окружения $EDITOR (по умолчанию — vi).
Если не указаны ни файл, ни ключи, то crontab будет читать файл расписания со своего стандартного ввода. Закончив ввод строк, нажмите Ctrl+D.
Формат файла расписания
Каждая незакомментированная строка файла расписания имеет следующий формат:
минута час день месяц день_недели [логин_имя] команда
Поля спецификации времени могут содержать:
? символ *, соответствующий любому значению;
? число: 0–59 для минуты, 0–23 для часа, 1–31 для дня, 1–12 для месяца, 0–7 для дня недели (воскресенье — это и 0, и 7);
? диапазон чисел, разделенных дефисом: например, 1-5 в поле день_недели означает «с понедельника по пятницу»;
? числа или диапазоны, разделенные запятыми, действующими как ИЛИ.
Поля «день месяца» и «день недели» тоже объединяются как ИЛИ: задание будет выполнено в день, удовлетворяющий хотя бы одной из этих спецификаций.
Команда — это любая командная строка, допустимая правилами интерпретатора sh.
Например, следующая запись означает, что архивирование каталога /home/den будет производиться каждый день, кроме воскресенья, в семь часов утра:
0 7 * * 1-6 tar cfz /backup/home.den.gz /home/den
В дистрибутивы Linux обычно входит готовый системный файл расписаний /etc/crontab и сценарии для выполнения стандартных задач по обслуживанию системы (ротации журналов, ведения базы установленных пакетов программ и т.п.). размещенные в каталогах /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly. Директива run-parts в файле /etc/crontab указывает, что следует выполнить все исполняемые файлы из указанного каталога.
Данный текст является ознакомительным фрагментом.