Настройка задач Cron

Основной файл конфигурации cron, /etc/crontab, содержит следующие строки:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Первые четыре строки - это переменные, настраивающие среду окружения, в котором будут работать задачи cron. Значение переменной SHELL сообщает системе о том, какую оболочку использовать (в этом примере будет использована оболочка bash), а переменная PATH определяет пути, используемые для выполнения команд. Результат выполнения задач cron будет выслан по электронной почте пользователю, определённому в переменной MAILTO. Если в качестве значения переменной MAILTO задана пустая строка (MAILTO=""), электронные письма отправляться не будут. Переменная HOME задаёт домашний каталог, используемый при выполнения команд или сценариев.

Каждая строка в файле /etc/crontab имеет следующий формат:

minute   hour   day   month   dayofweek   command

Для любых указанных выше параметров можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.

Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать /<целое>. Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.

Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.

Пример 22-1. Примеры файлов crontab

# record the memory usage of the system every monday 
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh

Как видно из файла /etc/crontab, в нём используется сценарий run-parts, чтобы запускающий сценарии в каталогах /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly соответственно ежечасно, ежедневно, еженедельно и ежемесячно. Файлы в этих каталогах должны быть сценариями оболочки.

Если задачи cron должны выполняться по расписанию, но не ежечасно, ежедневно, еженедельно или ежемесячно, их можно добавить в каталог /etc/cron.d. Все файлы в этом каталоге имеют тот же синтаксис, что и /etc/crontab.

Демон cron каждую минуту ищет изменения в файле etc/crontab и каталогах etc/cron.d/ и /var/spool/cron. Если какие-либо изменения будут найдены, они загружаются в память. Таким образом, демон не нуждается в перезапуске при изменении файла crontab.

Другие пользователи (не root) также могут настраивать задачи cron, используя программу crontab. Все созданные пользователями файлы crontab, хранятся в каталоге /var/spool/cron и выполняются, от имени создавшего их пользователя. Чтобы создать файл crontab для пользователя, войдите в систему под его именем и введите команду crontab -e, чтобы отредактировать crontab пользователя, с помощью редактора, указанного в значении переменной окружения VISUAL или EDITOR. Этот файл использует тот же формат, что и /etc/crontab. Когда изменения фала crontab будут сохранены, этот файл crontab будет записан в соответствии с именем пользователя, под названием /var/spool/cron/username.

Запуск и остановка службы

Чтобы запустить службу cron, выполните следующую команду: /sbin/service crond start. Чтобы остановить её, выполните команду: /sbin/service crond stop. Рекомендуется, чтобы эта служба запускалась при загрузке системы. Обратитесь к Главе 8 за указаниями по настройке автоматического запуска службы cron при загрузке системы.