Одна из основных задач автоматизации администрирования операционной системы — выполнение программ в заданное время или с заданной периодичностью.
Для запуска одной или более команд в заранее определенное время используется команда at. В этой команде вы можете определить время и дату запуска той или иной команды. Команда at требует, по меньшей мере, двух параметров — время выполнения программы и запускаемую программу с ее параметрами запуска.
Приведенный ниже пример запустит команду на выполнение в 01:01. Для этого введите все, приведенное ниже, с терминала, завершая ввод каждой строки нажатием клавиши <Enter> и по окончании ввода всей команды — <Ctrl>+<D> для ее завершения.
at 1:01
ls
echo “Time is 1:01″
Помимо времени, в команде at может быть также определена и дата запуска программы на выполнение,
Пользователь root может без ограничения применять практически любые команды. Для обычных пользователей права доступа к команде at определяются файлами /etc/at.allow и /etc/at.deny. В файле /etc/at.allow содержится список тех, кому разрешено использовать команду at, а в файле /etc/at.deny находится список тех, кому ее выполнять запрещено.
Вы можете пролистать список запланировнных на исполнение заданий используя команду:
at -l
которая выдаст вам пронумерованный список ожидающих заданий.
Если вы передумали, вы можете удалить задание из списка. Например, команда:
atrm 8
удалит задание номер 8 из списка.
Я мог бы также назначить выполнения задания намного позднее, например команда:
at 23:55 12/31/00
startx
запустила бы систему X-Windows как раз перед наступлением нового тысячелетия (за 5 минут до полуночи 31 Декабря 2000 года).
Если вы не в состоянии выполнить команду at проверьте, запущен ли демон at (”atd”) (используйте ntsysv с привилегиями суперпользователя). Если вы не можете выполнять команду at как обычный пользователь, хотя она работает для суперпользователя, проверьте, существует ли файл /etc/at.deny и пуст ли он, а также то, что файла /etc/at.allow не существует. Так должно быть в установке по-умолчанию, которая позволяет всем пользователям выполнять at.; Если вы желаете, чтобы только некоторые пользователи могли выполнять команду at, создайте файл /etc/at.allow и перечислите там этих пользователей.
batch
Команда batch в принципе аналогична команде at. Более того, batch представляет собой псевдоним команды at -b. Для чего необходима эта команда? Представьте, вы хотите запустить резервное копирование вечером. Однако в это время система очень занята, и выполнение резервирования системы практически парализует ее работу. Для этого и существует команда batch — ее использование позволяет операционной системе самой решить, когда наступает подходящий момент для запуска задачи в то время, когда система не сильно загружена.
Формат команды batch представляет собой просто список команд для выполнения, следующих в строках за командой; заканчивается список комбинацией клавиш <Ctrl>+<D>. Можно также поместить список команд в файл и перенаправить его на стандартный ввод команды batch.
cron
Cron — это программа, выполняющая задания по расписанию, но, в отличие от команды at, она позволяет выполнять задания неоднократно. Вы определяете времена и даты, когда должна запускаться та или иная программа. Времена и даты могут определяться в минутах, часах, днях месяца, месяцах года и днях недели.
программа cron запускается один раз при загрузке системы. При запуске cron проверяет очередь заданий at и задания пользователей в файлах crontab. Если для запуска не было найдено заданий — следующую проверку cron произведет через минуту.
Для создания списка задач для программы cron используется команда crontab. Для каждого пользователя с помощью этой команды создается его собственный crontab-файл со списком заданий, имеющий то же имя, что и имя пользователя.
Каждая строка в файле crontab содержит шаблон времени и команду. Команда выполняется тогда, когда текущее время соответствует приведенному шаблону. Шаблон состоит из пяти частей, разделенных пробелами или символами табуляции, и имеет вид:
минуты часы день_месяца месяц день_недели задание
Первые пять полей представляют собой шаблон времени и обязательно должны присутствовать в файле. Для того чтобы программа сгоп игнорировала поле шаблона времени, поставьте в нем символ звездочки (*).
Например, шаблон 10 01 01 * * говорит о том, что команда должна быть запущена в десять минут второго каждого первого числа любого (*) месяца, каким бы днем недели оно ни было. В табл. 26.3 приведено описание полей таблицы задания сгоп.
Таблица 26.3. Параметры таблицы заданий программы сгоп
Поле Описание
минуты Указывает минуты в течении часа. Значения от 0 до 59
часы Указывает час запуска задания. Значения от 0 до 23, где 0 — полночь
день_месяца Указывает день месяца, в который должна исполняться команда
месяц Указывает месяц, в который необходимо запускать задание. Значения
лежат в пределах от 1 до 12, где 1 — январь
день_недели Указывает день недели — или как цифровое значение от 0 до 7 (0 и 7
означают воскресенье) или используя первые три буквы, например Моп
задание Командная строка для запуска задания
Ниже приведены несколько команд, исполняемых программой сгоп:
- команда запускается в 1 минуту каждого часа:
- 01 * * * * /usr/bin/script
- команда запускается каждый день в 8:20:
- 20 8 * * * /usr/bin/script
- команда запускается в б часов каждое воскресенье:
- 00 б * * 0 /usr/bin/script
- команда запускается в 7:40 каждое первое число:
- 40 7 1 * * /usr/bin/script
Для создания и редактирования файла заданий для программы сгоп используется команда crontab. Прямое редактирование файла заданий не допускается.
Команда crontab имеет следующие параметры командной строки:
- -е — позволяет редактировать компоненты файла (при этом вызывается редактор, определенный в переменной editor);
- -r —удаляет текущий crontab-файл из каталога;
- -l — используется для вывода списка текущих заданий.
Сгоп также имеет возможность разрешать или запрещать конкретным пользователем свое использование. Для этого существуют файлы /etc/cron.allow и /etc/cron.deny, которые аналогичны описанным ранее /etc/at.allow и /etc/at.deny.
3.3.3 Как настроить cron?
Ч тобы выяснить, когда cron “просыпается” для выполнения своих задач, взгляните на файл /etc/crontab,например:
cat /etc/crontab
Он может содержать нечто подобное:
# 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
Вы видите, что существуют четыре категории заданий: выполняемые ежечасно, ежедневно, еженедельно и ежемесячно. Вы можете изменить их или добавить свою собственную категорию. Вот как это работает.
Колонки в элементах списка показывают: минуту (0-59), час (0-23), день месяца (1-31), месяц года (1-12), день недели (0-6 — от воскресенья до субботы). Значок “*” означает “любое допустимое значение”.
Таким образом, в указанном примере ежечасные задания выполняются каждый раз, когда часы компьютера показывают “и одна минута”, что происходит каждый час в одну минуту следующего часа. Ежедневные задания выполняются каждый раз, когда часы показывают 2 минуты пятого утра, что происходит лишь раз в день. Еженедельные задания выполняются в 22 минуты пятого утра в воскресенье. Ежемесячные задания выполняются в 42 минуты пятого в первый день месяца. Директории со скриптами (сценариями), содержащими команды(у), которые должны выполняться записаны в последнем поле каждой записи.
Если вам нужно, чтобы ваши задания выполнялись бы в полдень, а не в 4 часа утра – просто измените цифру 4 на 12. Cron “просыпается” каждую минуту и проверяет, не изменился ли файл /etc/crontab, поэтому нет необходимости что-либо перезапускать после того, как вы что-то изменили.
Вот пример записи в /etc/crontab которая заствляет задание выполняться три раза в неделю (Пнд, Срд, Птн):
02 4 * * 1,3,5 root run-parts/etc/cron.weekly
Пример, подсмотренный в usenet, который показывает, как автоматически отправлять по электронной почте файл журнала (отредактирован):
0 0 * * * (/bin/mail abc@abc.com < /var/log/messages) > /dev/null 2>&1
Похожие записи
No user прокомментировали сообщение
Оставить комментарий