12 апреля 2010 г.

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


Семейство операционных систем UNIX и их клонов (Linux, FreeBSD и т.д.) имеют прекрасный набор команд, использование которых облегчает жизнь системному администратору. Как говорится, "у нас все для людей". ;) К одной из таких команд относится программа cron, планировщик заданий пользователя. При старте системы запускается демон cron, который каждую минуту проверяет очередь заданий пользователя - crontab, расположенную в файлах в директории /var/spool/cron/crontabs/.

Основные команды:
  • # crontab -l - просмотреть файл очереди заданий текущего пользователя,
  • # crontab -e - редактировать файл очереди заданий текущего пользователя,
  • # crontab -r - удалить файл очереди заданий текущего пользователя.

Планирование команды я покажу на примере. Вот такие строчки планируют задания пользователя:
30 04 10 04 * /home/slava/scripts/start_stop_sap.sh 1>> /home/slava/scripts/start_stop_sap.log 2>&1
В 4:30 (первые два числа строки) 10 апреля (третье и четвертое числа) (* - в любой день недели) выполнится скрипт /home/slava/scripts/start_stop_sap.sh и запишет результаты своего выполнения и сообщения об ошибках в файл /home/slava/scripts/start_stop_sap.log. Можно ставить вместо чисел знаки "*". Можно указывать несколько значений через ",". Таким образом создать периодическое планирование задания. Для каждого задания своя строка. Можно вставлять строки с комментариями, начиная символом "#". Для осуществления планирования достаточно сохранить файл. Для удаления задания можно удалить строку или поставить перед ней знак комментария - "#". Вот пример периодического планирования (каждые 10 минут) выполнения скриптов:
# 15.08.2005. System loading. Shibolov Vyacheslav.
00,10,20,30,40,50 * * * * /opt/sys_load/bin/cpu.pl 1>> /opt/sys_load/log/cpu.pl.log 2>&1
00,10,20,30,40,50 * * * * /opt/sys_load/bin/disk.pl 1>> /opt/sys_load/log/disk.pl.log 2>&1
А теперь вопрос знатокам. :) Есть ли опасность в этой команде? Какой сюрприз она может преподнести администратору?

Сегодня утром на проекте обнаружилось, что 2 диалоговые инстанции "лежат". Сервера, на которых они были запущены, функционируют в штатном режиме. В логах (/usr/sap/<SID>/<Instance_name>/work/dev_disp, /var/adm/syslog/syslog.log) информация о "шпионе", который зашел 10 апреля в 4:30 и положил обе инстанции нашим любимым пользователем <sid>adm. Всё. Никаких ошибок, дампов. База данных в этот момент совершала обряд под названием offline backup. Через систему никто остановить инстанции не мог. Почему именно эти инстанции? Почему в 4:30? Вопросы летали в голове пока я не додумался заглянуть в crontab. И что же. А ничего. Просто "я годичной давности" слал привет "себе современному". :) Не закомментировал строки останова инстанций год назад, вот они и сработали, как отлично работающий механизм.

Если не хотите таких приветов, то комментируйте/удаляйте старые планирования.
Подробности планирования заданий в cron смотрите в документации:
# man 1 crontab
# man 1M cron
Автор: Шиболов Вячеслав Анатольевич

Комментариев нет:

Отправить комментарий