В Linux планировщик задач cron
— демон, выполняющий регулярные задания по обслуживанию системы. Инструкции для задач cron
помещаются в файл crontab
.
В системе Linux составлять расписания для автоматического запуска заданий могут не только администратор системы, но и пользователи.
Содержание
- Как работает crond
- Составление расписания заданий
- Редактирование файла crontab
- Запись из файла
- Непосредственное редактирование файла crontab
- Просмотр файла crontab
- Удаление файла crontab
- Выводы
Как работает crond
Принцип работы демона crond
прост. После запуска (как правило, при загрузке системы) демон просыпается каждую минуту и проверяет, не запланирован ли запуск в эту минуту каких-либо программ. Если такие программы находятся, демон запускает их и отправляет по электронной почте сообщения пользователям, запланировавшим запуск.
Составление расписания заданий
Составление расписания — задача несложная. Расписание размещается в отдельном файле crontab
. В каждой строке файла помещается задание, которое должно быть запущено в определённое время.
Формат записей файла crontab
Часть time-date (время-дата) состоит из пяти числовых полей, разделённых пробелами и определяющих время запуска задания:
Минуты | Часы | День месяца | Месяц | День недели |
---|---|---|---|---|
Допустимые значения: 0-59 | Допустимые значения: 0-23 | Допустимые значения: 0-31 | Допустимые значения: 0-12. Месяц можно указать тремя первыми буквами его (английского) названия | Допустимые значения: 0-7, где 0 и 7 — воскресенье |
Для удобства заполнения указанных полей введены следующие правила:
- Можно указывать значения в виде численных интервалов. К примеру, интервал
1-3
в поле часов означает 1.00, 2.00 и 3.00 пополуночи,2-4
в поле дня недели — вторник, среду или четверг. - Интервалы можно задавать с шагом больше единицы. Например, чтобы указать каждый второй час, начиная с полуночи, следует установить интервал 0-23 с шагом 2 через косую черту:
0-23/2
- Звездочка
*
указывает полный интервал значений поля — от минимального до максимального. Например, в поле дня месяца звездочка означает интервал 0-31, в поле дня недели — 0-7 - День недели или месяц можно указать первыми тремя буквами его (английского) названия
Примеры времени—даты
Несколько примеров заполнения полей времени—даты:
0 1 * * *
Запуск задания ежедневно в 1.00 пополуночи
30 14 * * 0
Запуск задания по воскресеньям в 2.30 пополудни
0 23-7/2,8 * * *
Запуск задания каждые 2 часа с 23.00 до 7.00 и в 8.00
0 12 * 1 mоn
Запуск задания в полдень каждого понедельника января каждого года
0 12 2 feb *
Запуск задания в полдень второго февраля каждого года
Поле command
Поле command (команда) отделено от полей времени—даты одним или несколькими пробелами и простирается до конца строки. Команды обрабатываются оболочкой /bin/sh
.
Например, следующая запись в файле crontab
предусматривает ежедневный запуск программы /usr/sbin/backup
в 1.00 пополуночи:
0 1 * * * /usr/sbin/backup
Некоторым командам (например, mail
) требуется ввод информации с устройства стандартного ввода. Это указывается при помощи знака процента %
. Первый такой знак обозначает начало стандартного ввода, каждый последующий — смену строки.
Редактирование файла crontab
Файл crontab
редактируется командой crontab -e
. Возможны два подхода:
- создание нового файла со всеми записями, которые должны входить в файл
crontab
, с последующей его записью на диск под этим именем по командеcrontab
; - непосредственное редактирование файла по команде
crontab -e
.
Запись из файла
Для записи содержимого файла crontab
из другого файла необходимо создать этот другой файл (в привычном текстовом редакторе) со всеми записями, из которых должен состоять файл crontab
. Это могут быть, к примеру, следующая запись:
0 1 * * * /usr/sbin/backup
Созданному файлу следует присвоить подходящее имя, например сronjobs
. После того как указанный файл создан, его содержимое необходимо записать в файл crontab
командой:
~$ crontab cronjobs
Содержимое файла cronjobs
полностью заменит содержимое файла crontab
данного пользователя. Используя этот метод, любой пользователь может редактировать свой файл crontab
. Суперпользователь обладает особым правом редактировать файлы crontab
остальных пользователей. Редактирование чужого файла указывается флажком -u
. Например, по команде:
~# crontab -u oleg cronjobs
Файл cronjobs
записывается как файл crontab
пользователя oleg
.
Непосредственное редактирование файла crontab
Команда crontab
позволяет избежать многоступенчатой операции с созданием отдельного файла. Если ввести команду crontab
с опцией -е
, можно редактировать файл crontab
непосредственно.
По умолчанию по команде crontab
с опцией -е
файл crontab
загружается в редактор Vi. Редактор Vi — мощный, хотя и сложный инструмент, популярный среди опытных пользователей Unix. Тот, кто предпочитает другой редактор, например Xedit, может установить соответствующее значение переменной среды EDITOR:
~$ export EDITOR=xedit
После этого вводится команда:
~$ crontab -е
Выполнеине команды приводит к открытию файла crontab
в указанном редакторе.
Подобно тому, как обычный пользователь может редактировать собственный файл crontab
, суперпользователь может редактировать файлы crontab
остальных пользователей. Для этого используется команда:
~# crontab -u user-name -e
Просмотр файла crontab
Для просмотра содержимого файла crontab
вводится команда:
~$ crontab -l
Суперпользователь может просматривать файлы crontab
остальных пользователей:
~# crontab -u username -l
Удаление файла crontab
Для удаления содержимого своего файла crontab
пользователь вводит команду:
~$ crontab -r
Суперпользователь может удалять файлы crontab
остальных пользователей:
~# crontab -u oleg -r
Выводы
Из этой статьи становится понятна работа в Linux планировщика задач cron
, а также составление расписания его заданий с помещением их в файл crontab
. Умение использовать этот демон позволяет автоматизировать выполнение многих задач по обслуживанию системы. Научиться пользоваться им необходимо и тем, кто делает лишь первые шаги в освоении системы Linux.