В 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.