IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Linux  >

Экзамен LPI 201: Настройка работ и автоматическое выполнение заданий

Администрирование Linux, cредний уровень (LPIC-2) тема 213

developerWorks
На предыдущую страницуСтраница 2 из 7 На предыдущую страницу

Опции документа

Обсудить


Выскажите мнение об этом учебном пособии

Помогите нам улучшить содержание


Автоматизация периодически запускаемых заданий

Конфигурирование cron

Демон cron используется для периодического запуска комманд. Вы можете использовать cron для широкого круга задач по поддержке и администрированию. Если это событие или задание возникает с определенной реглярностью, его следует обслуживать при помощи cron. Cron пробуждается каждую минуту и проверяет, не нужно ли чего-нибудь сделать, но он не может запускать эти задания чаще чем раз в минуту. (Если вам требуется такая функциональность, возможно вам необходим демон, а не "cron job.") Cron журналирует свои действия через механизм syslog.

Cron ищет свои конфигурационные файлы, в которых устанавливаются переменные окружения и команды, которые следует исполнять, в разных местах. Первый из них -- это /etc/crontab, содержащий системные задания. Каталог /etc/cron.d/ может содержать различные конфигурационные файлы, дополняющие /etc/crontab. Отдельные пакеты могут добавлять файлы (с именами, соответсвующими имени паета) в /etc/cron.d/, но системному администратору следует использовать /etc/crontab.

ПОльзовательские конфигурации для cron хранятся в /var/spool/cron/crontabs/$USER. Однако, они должны быть созданы при помощи программы crontab. При помощи crontab пользователи могут задавать свои собственные периодически запускаемые задания.





В начало


Ежедневный, еженеделный и ежемесячный запуск заданий

Задания, которые должны выполняться ежедневно, еженедельно или ежемесячно -- а это наиболее распроcтраненная ситуация -- описываются согласно специальным соглашениям. Каталоги /etc/cron.daily/, /etc/cron.weekly/ и /etc/cron.monthly/ созданы для хранения наборов соответсвующих скриптов. Добавление или удаление скриптов в этих каталогах -- это простейший путь для управления системными заданиями. Например, система, которую обслуживаю я, осуществляет ежедневную ротацию файлов журналов при помощи скрипта:


Листинг 1. Пример скриптового файла, запускаемого ежедневно
                    
 $ cat /etc/cron.daily/logrotate
 #!/bin/sh
 test -x /usr/sbin/logrotate || exit 0
 /usr/sbin/logrotate /etc/logrotate.conf



В начало


Cron и anacron

Вы можете использовать anacron для выполнения команд с частотой в определенное количество дней. В отличие от cron, anacron проверяет каждое задание, которое должно было быть исполненено в течение последних n дней (где n -- это период, определенный для данного задания, в отличиие от проверки текущего времени для определения момента запуска). Если оно не запускалось, anacron производит запуск с задержкой, указанной в минутах в параметре delay. Таким образом, на машинах, которые не включены постоянно, переодически запускаемые задачи выполняются единожды, когда машина работает (конечно, точное время запуска может варьироваться, но задание не будет забыто).

Anacron читает список заданий из конфигурационного файла /etc/anacrontab. Каждая запись включает в себя период в днях, задержку в минутах, уникальный идентификатор задания и команду оболочки. Например, на одной из Linux систем, которую я поддерживаю, anacron используется для ежедневного, еженедельного и ежемесячного запуска заданий, даже если машина была выключена в тот момент, когда оно должно было быть запущено:


Листинг 2. Пример конфигурационного файла anacron
                    
      $ cat /etc/anacrontab
      # /etc/anacrontab: configuration file for anacron
      SHELL=/bin/sh
      PATH=/sbin:/bin:/usr/sbin:/usr/bin
      # These replace cron's entries
      1         5  cron.daily    nice run-parts --report /etc/cron.daily
      7        10  cron.weekly   nice run-parts --report /etc/cron.weekly
      @monthly 15  cron.monthly  nice run-parts --report /etc/cron.monthly



В начало


Содержимое crontab

Формат /etc/crontab (или содержимое файлов /etc/cron.d/) несколько отличается от пользовательских файлов crontab. По сути дела, они содержат одно дополнительное поле, указывающее пользователя, под которым должна запускаться данная команда. Для пользовательских crontab файлов это не нужно, так как они уже содержат имя пользователя в своем названии (/var/spool/cron/crontabs/$USER).

Каждая строчка /etc/crontab или устанавливает переменную окружения, или описывает задание. Комментарии и пустые строки игнорируются. Для заданий cron первые пять полей задают время запуска (где каждое поле может задаваться списком или диапазоном). Поля обозначают минуты, часы, дни месяца, месяцы, дни недели (разделяются пробелами или табуляциями). Asterisk (*) в любой позиции обозначает любой. Например, для запуска задания в полночь по вторникам и четвергам с августа по октябрь, следует сделать так:

# line in /etc/crontab
0 0 * 7-9 2,5 root /usr/local/bin/the-task -opt1 -opt2



В начало


Использование специальных scheduling переменных

Наиболее распространенными scheduling pattern'ам назначены сокращенные имена, которые вы можете использовать в первых пяти полях:

@reboot
Запускать один раз, при старте.
@yearly
Запускать один раз в год, "0 0 1 1 *".
@annually
Тоже самое, что и @yearly.
@monthly
Запускать один раз в месяц, "0 0 1 * *".
@weekly
Запускать один раз в неделю, "0 0 * * 0".
@daily
Запускать один раз в день, "0 0 * * *".
@midnight
Тоже самое, что и @daily.
@hourly
Запускать раз в час, "0 * * * *".

Например, конфигурационный файл может содержать:

@hourly root /usr/local/bin/hourly-task
0,29 * * * * root /usr/local/bin/twice-hourly-task



В начало


Использование crontab

Для установки пользовательских заданий используйте команду crontab (в отличие от файла /etc/crontab). Конкретнее, crontab -e запускает текстовый редактор для правки файла. Вы можете вывести ваш текущий список заданий при помощи crontab -l и удалить задание при помощи crontab -r. Или же вы можете задать crontab -u user для управления заданиями указанного пользователя user, но по умолчанию это будете вы (ограничения на права доступа играют совю роль).

Если в системе пристутсвует файл /etc/cron.allow, то он должен содержать имена всех пользователей, которым разрешено управление такими заданиями. С другой стороны, если файла /etc/cron.allow нет, то пользователь не должен быть помещен в файл /etc/cron.deny, если ему должно быть разрешено управление заданиями. Если ни одного из этих файлов нет, кто угодно может использовать crontab.



В начало



На предыдущую страницуСтраница 2 из 7 На предыдущую страницу
    IBM в России Конфиденциальность Контакты