Составление расписания заданий

Составление расписания - задача несложная. Расписание размещается в отдельном файле crontab. В каждой строке файла помещается задание, которое должно быть запущено в определенное время.

Рассмотрим формат записей файла crontab.

time-date command

Часть time-date (время-дата) состоит из пяти числовых полей, разделенных пробелами и определяющих время запуска задания. Это следующие поля (слева направо).

Для удобства заполнения указанных полей введены следующие правила.

Примеры времени-даты

Рассмотрим несколько примеров заполнения полей времени-даты.

0 1 Запуск задания ежедневно в 1.00 пополуночи

30 14 * * 0 Запуск задания по воскресеньям в 2.30 пополудни

Запуск задания в первый полдень каждого месяца

0.12 * 1. mоn Запуск задания в полдень каждого понедельника января каждого года

0 12 2 feb * Запуск задания в полдень второго февраля каждого года

Поле command

Поле command (команда) отделено от полей времени-даты одним или несколькими пробелами и простирается до конца строки. Команды обрабатываются оболочкой /bin/sh.

Например, следующая запись в файле crontab предусматривает ежедневный запуск программы /usr/local/bin/backupb 1.00 пополуночи.

0 1 * * * /usr/local/bin/backup

Некоторым командам (например, mail) требуется ввод информации с устройства стандартного ввода. Это указывается при помощи знака процента (%). Первый такой знак обозначает начало стандартного ввода, каждый последующий — смену строки.

Таким образом, следующая запись в файле crontab:

30 14 * * fri /bin/mail -s "TGif" armand@landegg.еdu%Слава

->богу, уже пятница%%Я.

предписывает отправлять сообщение электронной почты:

Слава богу, уже пятница Я по адресу armand@landegg. edu каждую пятницу в 2.10 пополудни.

Редактирование файла crontab

Файл crontab редактируется командой crontab -e. Возможны два подхода: создание нового файла со всеми записями, которые должны входить в файл crontab, с последующей его записью на диск под этим именем по команде crontab; или непосредственное редактирование файла по команде crontab -e.

Запись из файла

Для записи содержимого файла crontab из другого файла необходимо создать этот другой файл (в привычном текстовом редакторе) со всеми записями, из которых должен состоять файл crontab. Это могут быть, к примеру, следующие две записи.

0 1 * * * /usr/local/bin/backup

30 14 * * fri /bin/mail -s "TGif" armand@landegg.edu%Cловa

->богу, уже пятница%%Я.

Созданному файлу следует присвоить подходящее имя, например сron jobs. После того, как указанный файл создан, его содержимое необходимо записать в файл crontab командой

$ crontab cronjobs

Содержимое файла cronjobs полностью заменит содержимое файла crontab данного пользователя. Используя этот метод, любой пользователь может редактировать свой файл crontab. Корневой пользователь обладает особым правом редактировать файлы crontab остальных

пользователей. Редактирование чужого файла указывается флажком -и. Например, по команде

# crontab -u username cronjobs

файл cronj obs записывается как файл crontab пользователя username.

Непосредственное редактирование файла crontab

Команда crontab позволяет избежать многоступенчатой операции с созданием отдельного файла. Если ввести команду crontab с флажком -е, можно редактировать файл crontab непосредственно.

По умолчанию по команде crontab с флажком -е файл crontab загружается в редактор vi. Редактор vi - мощный, хотя и сложный инструмент, популярный среди опытных пользователей Unix. Тот, кто предпочитает другой редактор, например xedit, может установить соответствующее значение переменной среды EDiTOR.

$ export EDiTOR=xedit

После этого ввод команды

$ crontab -е

приводит к открытию файла crontab в указанном редакторе (рис. 17.1).


Рис. 17.1. Редактирование файла crontab в редакторе xedit

Подобно тому, как обычный пользователь может редактировать собственный файл crontab, корневой пользователь может редактировать файлы crontab остальных пользователей. Для этого используется команда

$ crontab -u user-name -e

Просмотр файла crontab

Для просмотра содержимого файла crontab введите команду crontab с флажком -1.

$ crontab -1

# НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ - редактируйте главный файл, затем переус-

# танавливайте. (/tmp/crontab.555 lnstalled on mon Jul 13 00:07:05 2001)

# (Cron verslon - $ld: crontab.c,v 2.13 1994/01/17 03:20:37 vlxle Exp $) 0 1 * * * /usr/local/bln/backup

30 14 * * frl /bln/mall -s "TGlf" armand@landegg.ес1и%Слава богу, уже пятница%%Я

Обратите внимание на строки комментариев, начинающиеся с символа "#". Корневой пользователь может просматривать файлы crontab остальных пользователей.

# crontab -u username -1

Удаление файла crontab

Чтобы удалить содержимое своего файла crontab, пользователь должен ввести команду crontab с флажком -r.

$ crontab -r

Корневой пользователь может удалять файлы crontab остальных пользователей.

# crontab -u user-name -r