Автоматизация выполнения регулярных задач
Утилита cron позволяет выполнять задание на регулярной основе с заданной периодичностью. В различных версиях GNU/Linux используются разные па- кеты cron, работа которых отличается в деталях. Основой регулярного вы- полнения заданий cron являются таблицы, в которых кодируется периодич- ность выполнения заданий.
В vixie-cron имеется общесистемная таблица заданий cron, находящаяся в файле /etc/crontab, и индивидуальные таблицы периодических заданий пользователей, находящиеся в каталоге /var/spool/cron. Файл системной таб- лицы заданий /etc/crontab имеет семь полей (пример 15.5). Первые пять полей используются для указания периодичности выполнения задания. Шестое по- ле указывает пользователя, с правами которого должно быть исполнено зада- ние. В седьмом поле задают саму команду.
Пример 15.5. Файл /etc/crontab |
SHELL=/bin/sh PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
25 6 * * * root run-parts /etc/cron.daily
47 6 * * 7 root run-parts /etc/cron.weekly
52 6 1 * * root run-parts /etc/cron.monthly
В таблице crontab, показанной в примере, установлены две переменные окружения — SHELL и PATH, и определены четыре задания. Первая из них указывает оболочку для запуска задания, а вторая определяет пути доступа к исполняемым командам. В примере 15.5 командой является run-parts с аргументом — именем каталога. Скрипт run-parts выполняет задания, расположенные в каталогах /etc/cron.hourly (ежечасно), /etc/cron.daily (еже- дневно), /etc/cron.weekly (еженедельно) и /etc/cron.monthly (ежемесячно).
Формат задания времени следующий:
r минуты часа (0—59);
r час суток (0—23);
r календарное число (день месяца 1—31);
D месяц (1—12);
r день недели, начиная с воскресенья (0—6).
Так, например, задание, определенное в последней строке crontab из приме- ра 15.5, будет запускаться в 6 часов 52 минуты первого числа каждого месяца.
Системную таблицу заданий имеет право изменять лишь суперпользователь. Обычные пользователи имеют право устанавливать свои собственные таблицы заданий. Таблицы заданий cron для обычных пользователей не имеют поля, в котором указывается имя пользователя, поэтому в них всего шесть полей.
Для манипулирования заданиями cron существует команда crontab. Если ей будет указан файл, содержащий таблицу заданий cron, то старая таблица cron будет стерта, а новая из файла будет сохранена (пример 15.6).
Пример 15.6. Создание таблицы cron |
$ echo '30 21 * * * wall Hello!' > crontab.eg
$ crontab crontab.eg
В примере 15.6 был создан файл crontab.eg, содержащий единственную стро- ку с заданием. Эта таблица была считана и установлена командой crontab.
Команда crontab с опцией -l выводит список заданий cron (пример 15.7).
Пример 15.7. Получение таблицы заданий cron |
$ crontab -l
30 21 * * * wall Hello!
Обращение к таблицам пользователей возможно с помощью опции –u (при-
мер 15.8).
Пример 15.8. Получение таблицы заданий конкретного пользователя |
# crontab -l -u user1
30 21 * * * wall Hello!
Для редактирования текущей таблицы заданий в текстовом редакторе можно использовать команду crontab -e. При вызове этой команды будет запущен текстовый редактор по умолчанию, в нем будет открыта текущая таблица заданий cron, которую можно отредактировать. Другой вариант редактиро- вания:
1. Таблица заданий сохраняется в файле: crontab -l > crontab.eg.
2. Временный файл редактируется: vi crontab.eg.
3. Отредактированная таблица заданий запоминается: crontab crontab.eg.
Для удаления таблицы заданий выполняют команду crontab –r (пример 15.9).
Пример 15.9. Удаление таблицы cron |
$ crontab -r
$ crontab -l
crontab: no crontab for user1
Можно ограничивать доступ пользователей к команде crontab с помощью фай- лов /etc/cron.allow и /etc/cron.deny. Если существует файл /etc/cron.allow, то толь- ко пользователи, указанные в нем, имеют право применять команду crontab. В файле /etc/cron.deny указывают пользователей без права вызова cron.
Дата добавления: 2015-06-12; просмотров: 1507;