Планировщик задач

Планировщик задач Наверняка вы хоть раз обнаруживали, что выполняете похожие задания в течение дня и хотели, чтобы существовала программа, позволяющая автоматизировать это. Подобная программа уже есть. Это Cron.

Cron — это программа, выполняющая задания по расписанию, если быть более точным, она известна как демон. Демон — это сервисная программа, которая исполняется в фоне, ожидая инструкций. Когда она получает их, она исполняет их и, закончив, опять переходит в спящее состояние.
Cron обычно запускается, когда происходит переключение на один из уровней запуска (runlevel). Чтобы убедиться, что он запущен, дайте следующую команду:
ps ax | grep crond
Если вы получите ответ похожий на это:
root 311 0.0 0.7 1284 112? S Dec24 0:00 crond
root 8606 4.0 2.6 1148 388 tty2 S 12:47 0:00 grep crond
то Cron уже запущен и вы готовы использовать его. Если вы не получили сообщение о "crond", тогда вы должны запустить этот демон, введя
crond
Cron особенно полезен, когда вам нужно запускать программы резервного копирования и/или сервисные программы, присматривающие за системой. Чтобы сказать cron, когда запускать программу, вы должны заполнить несколько полей. Каждая отдельная программа, которая отмечена в расписании cron, помещается в файл crontab. Поля определены следующим образом:
Min Hour DOM Month DOW User Cmd
Описание их значений просуммированно следующим образом:
Min — указывает минуты запуска скрипта; значение: от 0 до 59.
Hour — указывает час, в который должен запускаться скрипт; значения от 0 до 23, где 0 это полночь.
DOM — день месяца, в который вы хотите выполнять команду, т.е. чтобы запускать команду 23 числа каждого месяца, DOM должен быть равен 23.
Month — месяц, в который необходимо запускать скрипт; значения лежат в пределах от 1 до 12, где "1" это Январь и "12" Декабрь, или же можно указать первые три буквы месяца.
DOW — день недели, или как цифровое значение от 0 до 7 (0 и 7 означают Воскресенье) или как и название месяца, используя первые три буквы.
User — кто исполняет программу.
Cmd — путь и имя исполняемого(ой) скрипта/программы.
Вы можете использовать "*" (без кавычек) в любом поле, обозначающем время, обозначая таким образом "каждую минуту", "каждый час" и т.д.
Итак, помня приведенное выше описание, вот несколько правильных примеров:
# Эта команда запускается по прошествии 1й минуты каждого часа
01 * * * * root /usr/bin/script
# Эта команда запускается каждый день в 8:17 утра
17 8 * * * root /bin/mail
# Эта команда запускается каждый день в 8:17 вечера
17 20 * * * root /usr/bin/fetch
# Эта команда запускается в 4 утра каждое Воскресенье
00 4 * * 0 root /bin/qweb
# Эта команда запускается в 4:42 утра каждое первое число
42 4 1 * * root /usr/bin/squidlog
# Эта команда запускается каждый час 19го июля
01 * 19 07 * root /usr/bin/xman
Возможны и более изощренные методы указания времени: запустите "man 5 crontab", если хотите узнать о них.
Наиболее часто устанавливаемая на Линукс-системы версия cron — это vixie-cron, и поэтому в директории /etc/ должен быть файл crontab. Откройте его, используя выбранный вами текстовый редактор, и вы должны найти что-то вроде этого:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root@grangedairy.linux
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
Здесь: переменная SHELL указывает используемый командный интерпретатор, PATH указывает путь к большинству используемых программ, опция MAILTO — кому будет отослан вывод cron о результатах выполнения (если вас это раздражает, то вы можете удалить эту переменную), cекция после #runparts предназначена для того, чтобы все скрипты, например в директории /etc/cron.daily, исполнялись каждый день. Итак, чтобы добавить приведенные выше примеры в ваш crontab, вам нужно всего лишь вставить их в этот файл. Затем сохраните файл. Последнее, что нам нужно сделать, это указать cron, что мы редактировали файл. Это делается при помощи следующей команды:
crontab -u root /etc/crontab
Cron также имеет способность разрешать и запрещать конкретным пользователям свое использование. Чтобы добиться этого, нужно создать два файла с именами cron.allow и cron.deny в директории /etc.
Эти файлы работают так: если вы, например, хотите, чтобы никто не имел доступа к cron, то вы должны добавить строчку "ALL" в файл cron.deny; если вы хотите, чтобы только определенные люди использовали cron, то вы должны добавить их имена в cron.allow.
Вместо того, чтобы редактировать файл каждый раз, более простым способом будет использовать следующую команду:
cat username > > /etc/cron.allow
Вот и все!


Компьютерная газета. Статья была опубликована в номере 14 за 2002 год в рубрике soft :: linux

©1997-2024 Компьютерная газета