Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Изучение Linux.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.5 Mб
Скачать

19Cron - планирование заданий

Для выполнения рутинных действий, таких, как ротация лог-файлов, очистка каталогов от временных файлов, регулярное резервное копирование и т.п. в UNIX® существуют специальные средства автоматизации: at (batch) и cron. Команда at предназначена для однократного выполнения программы или сценария оболочки в заданное время. Формат команды следующий:

at [-q queue] [-f file] [-mldv] TIME

-q queue определяет очередь заданий. По умолчанию для at имя очереди a, для batch имя очереди b. Может принимать значения a-z, A-Z. Очереди с более старшими буквами исполняются с пониженным приоритетом.

-f file файл, в котором записаны задания (команды) для исполнения.

-m отправить сообщение пользователю по электронной почте по завершении исполнения задания

-l показать очередь заданий (то же, что и atq)

-d удалить задание (то же, что и atrm)

-v показать время, в которое задание будет выполнено.

Для периодического регулярного выполнения заданий по расписанию используется cron. Демон crond запускается при инициализации системы из /etc/rc.d/rc или

/etc/rc.d/rc.local.

Он проверяет каталог /var/spool/cron на наличие файлов с именами пользователей, существующих в системе, каждую минуту. Cron также проверяет файл /etc/crontab и каталог / etc/cron.d/ . После выполнения задания вывод команд отправляется по электронной почте пользователю или тому, чей адрес указан в переменной MAILTO. Расписание заданий создается при помощи утилиты crontab.

crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }

-u user позволяет системному администратору оперировать расписанием заданий другого пользователя. Если опция не задана, то имеется в виду расписание пользователя, запустившего crontab.

file – взять расписание из файла file. Если указать вместо имени файла -, используется стандартный ввод.

-l отображает текущее расписание на стандартный вывод

-r удаляет текущее расписание

-e вызывает редактор по умолчанию для редактирования расписания. По завершении редактирования расписание инсталлируется автоматически.

При редактировании по команде crontab -e или создании файла расписания используется следующий формат:

# Задается командный интерпретатор (необязательно) SHELL=/bin/sh

# Отправлять отчеты по email пользователю (необязательно, по

# умолчанию - себе) MAILTO=peter

# Собственно расписание заданий:

# мин(0-59) час(0-23) дата(1-31) мес(1-12) день_нед(0-7) команда

# Выполнять каждый день в 00:05

5 0 * * * /path/to/program

# Выполнять по первым числам каждые десять минут четных часов

*/10 */2 1 * * $HOME/bin/monthly

Поля, определяющие расписание (минута, час, дата, месяц, день_недели) могут быть представлены в форматах

конкретное значение (например, “5”). “*” - все возможные значения. список значений, разделенный запятыми (“1,3,6,15”).

промежуток значений (“3-12”), допускается комбинация со списком (“1-4,6,9,11-13”). кратные значения (“*/2” - каждое второе, “1-7/3” - каждое третье из промежутка) После инсталляции расписание загружается в память и проверяется каждую минуту.

Структура записи

# minute (0-59),

# | hour (0-23),

# | | day of the month (1-31),

# | | | month of the year (1-12),

# | | | | day of the week (0-6 with 0=Sunday).

# | | | | | commands

#frequent

*/5 * * * * fetchmail -aKv -m "user/bin/procmail -d %T" >/dev/null 2>&1