3.5.2. Планировщик задач
3.5.2. Планировщик задач
Команда at достаточно проста и удобна, но ее задания выполняются однократно, а многие задачи администратора (то же резервное копирование) требуют многократного запуска. Допустим, что вы запланировали резервное копирование ежедневно в 10 часов вечера. Каждый день набирать команду at не очень интересно, это надоест через неделю работы и захочется как-то оптимизировать задачу. Создавать файл сценария тоже не слишком удобно, потому что необходимо не забывать его выполнять.
Проблема решается через использование программы cron. Для этого у вас должен быть установлен демон crond, а лучше, если вы включите его в автозагрузку.
Для работы с демоном crond используется программа crontab. Чтобы добавить новую запись в расписание, необходимо выполнить ее без параметров. В ответ на это появится пустая строка, в которой можно задавать шаблон даты и необходимую команду. В общем виде это выглядит как:
минуты часы день месяц деньнедели команда
День недели указывается числом от 0 до 7. На воскресенье указывают 0 и 7. Это сделано именно так, потому что в различных странах по-разному определяется начало недели — где-то с понедельника, а иногда с воскресенья. В первом случае удобно выставлять значения от 1 до 7, в другом — от 0 до 6.
Если какой-либо параметр не имеет значения, то вместо него необходимо поставить звездочку.
Теперь рассмотрим несколько примеров.
00 5 * * * /home/flenov/backup1_script
Здесь заполнены только часы и минуты. Так как остальные параметры не указаны, то команда будет выполняться ежедневно в 5, вне зависимости от дня недели, числа или месяца.
00 20 * * 1 /home/flenov/backup2_script
Эта команда выполняет тот же файл сценария каждый понедельник (день недели равен 1) в 20:00.
00 * * * * /home/flenov/backup3_script
Такая команда будет выполняться каждый час ровно в 00 минут.
Внимание!
Если вы запустили программу crontab и, не введя команд, нажмете клавиши <Ctrl>+<D>, то все предыдущие задания сотрутся. Будьте внимательны, для выхода из программы без сохранения используйте только клавиши <Ctrl>+<C>.
Помимо этого, у сервиса cron есть несколько дополнительных директорий, упрощающих создание расписаний. Вот распределение выполняемых сценариев по каталогам:
? /etc/cron.hourly — ежечасно;
? /etc/cron.daily — ежедневно;
? /etc/cron.weekly — еженедельно;
? /etc/cron.monthly — ежемесячно.
Вроде все просто, но если сценарий выполняется еженедельно, то в какое время и в какой день недели? Все станет ясно, если посмотреть на конфигурационный для сервиса cron файл /etc/crontab. В нем есть следующие строки:
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
В начале строки указывается время выполнения. Вы можете изменить его так, что сценарии из директории /etc/cron.monthly начнут выполняться ежечасно. Так что, названия чисто символические и только по умолчанию. Они легко меняются.
Обратите также внимание, что в этих директориях уже есть сценарии, и все ненужные можно убрать, чтобы излишне не нагружать систему, или запланировать их выполнение на другое время.
Чтобы просмотреть список существующих заданий, выполните команду crontab с параметром -1. Для редактирования уже созданных записей выполните команду crontab с параметром -е. В ответ на это запустится текстовый редактор, в котором можно корректировать записи. Кстати, если вы не работали с этим редактором, то могут возникнуть проблемы, потому что он достаточно специфичный. Тогда нажмите клавишу <F1> и воспользуйтесь справкой. Команды тоже вводятся необычно. По выходу из этого редактора изменения вступают в силу мгновенно, а чтобы закончить работу без сохранения изменений, наберите ":q!" и нажмите клавишу <Enter>.
В принципе, все задания cron хранятся в текстовом виде. Для каждого пользователя формируется свой crontab-файл в директории /var/spool/cron/файл. Имя созданного файла совпадает с именем пользователя.
Вот пример содержимого crontab-файла:
#DO NOT EDIT THIS FILE - edit the master and reinstall.
#(- installed on Thu Jan 27 13:55:49 2005)
#(Cron version--$Id:crontab.c,v2.13 1994/01/17 03:20:37 vixie Exp $)
10 * * * * ls
Вы можете редактировать его напрямую, без использования команды crontab -е.
Данный текст является ознакомительным фрагментом.