Программа cron является основным системным планировщиком, служащим для выполнения различных заданий в фоновом режиме. Команда crontab позволяет пользователям создавать, редактировать и удалять инструкции для программы cron посредством специального crontab–файла. У каждого пользователя может быть свой crontab–файл, но в крупных системах администратор (пользователь root) обычно исключает данную возможность. В этом случае администратор создает вспомогательные файлы cron.deny и cron.allow, содержащие списки пользователей, которым соответственно запрещено и разрешено выполнять команду crontab.
Чтобы планировать выполнение заданий в определенное время, нужно знать формат записей в crontab–файле. Каждая запись содержит шесть полей;
1
Минуты — 0—59
2
Часы — 0—23 (0 означает полночь)
3
День месяца — 1—31
4
Месяц — 1—12
5
День недели — 0—7 {0 и 7 означает воскресенье)
6
Команда, которая должна быть выполнена
Общий формат записи таков:
минуты часы день_месяца месяц деиь_нвдели команда
Все поля разделяются пробелами.
В первых пяти полях записи могут быть указаны диапазоны значений. Например, для того чтобы обеспечить выполнение задания с понедельника по пятницу, надлежит указать в пятом поле значение 1-5,
Допускается также задание списка значений, разделенных запятыми. Если,
например, задание должно быть выполнено только в понедельник и четверг, следует
ввести 1, 4.
Символ звездочки (*) — это обозначение диапазона "от первого до последнего", т. е. каждую минуту, каждый день и т. д. Если указан диапазон, то можно задать для него шаг пропуска с помощью символа /. Например, запись */2 означает "каждый второй".
В crontab–файле допускаются комментарии. В начале строки комментария должен стоять символ #.
Запись
30 21 * * * /apps/bin/cleanup.sh
означает выполнение сценария cteanup.sh в каталоге /apps/bin каждый вечер в 21:30. Запись
45 4 1,10,22 * * /apps/bin/backup.sh
означает выполнение сценария backup.sh в каталоге /apps/bin в 4:45 утра 1–го, 10–го и 22–го числа каждого месяца. Запись
10 1 * * 6,0 /bin/find -name "core" — exec rm {} \;
означает выполнение команды find для удаления файлов дампа в 1:10 ночи по субботам и воскресеньям. Запись
0,30 18-23 * * * /apps/bin/dbcheck.sh
означает выполнение сценария dbchecksh в каталоге /apps/bin каждые полчаса между 18:00 и 23:00.
Запись
0 23 * * 6 /apps/bin/qtrend.sh
означает выполнение сценария qtrend.sh в каталоге /apps/bin в 23:00 каждую субботу. При выполнении команд и сценариев, указанных в crоntab–файле, следует убедиться, что корректно заданы все необходимые переменные среды. Программа cron не сделает это за вас: это не входит в ее компетенцию. Поэтому локальные переменные среды должны быть установлены вручную, в отличие от глобальных переменных, которые устанавливаются автоматически. Данная задача может быть решена непосредственно в crontab–файле за счет создания записи следующего вида:
имя_переменной=значение
Если программа cron не сможет выполнить поступившую команду, пользователь получит электронное сообщение, в котором будут указаны причины неудачи.
Общий формат команды crontab таков:
crontab [-u пользователь] — e -l -r
ОПЦИЯ
назначение
-u пользователь
Установка имени пользователя, для которого нужно создать
crontab–файл
-e
Активизация режима редактирования crontab–файла
-1
Отображение содержимого crontab–файла
-r
Удаление crontab–файла
Если вы хотите работать с собственным crontab–файлом, то указывать опцию — и нет необходимости.
Сначала, еще до того, как crontab–файл будет помещен в очередь заданий программы cron, необходимо установить переменную среды editor. Благодаря этому планировщик получит указание относительно того, какой редактор следует использовать при обработке crontab–файлов. Если вы предпочитаете редактор vi, откройте файл .profile или .bash_profile, находящийся в вашем начальном каталоге, и поместите в него следующие команды:
EDITOR=vi; export EDITOR
Далее создайте новый файл <имя_полъзователя>cron, где <имя_польэователя> — ваше регистрационное имя. Вот пример содержимого такого файла:
• вывод текущей даты на экран
• каждые 15 минут между 18:00 и 6:00
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
Приведенная выше запись задает отображение на экране текущей даты каждые 15 минут в указанном интервале времени. Теперь, если система вдруг "зависнет", вы сможете определить, когда это произошло.
Чтобы поместить в очередь заданий планировщика cron свой crontab–файл, выполните команду crontab, указав в ней имя созданного файла:
$ crontab davecron
Копия файла будет помещена в каталог /var/spool/cron, а имя копии совпадет с вашим регистрационным именем (в данном случае — dave).
Для вывода на экран содержимого crontab–файла предназначена команда crontab -l:
$ crontab -l