Главная | Контакты | Настройки СМЕНИТЬ ПАЛИТРУ:

Главная > Программы > Cron

Cron - планировщик заданий FreeBSD

Решил написать небольшую заметку по использованию стандартного *nix'ового планировщика. Cron - чрезвычайно удобное даймоническое создание, способное делать все, что Вы ему скомандуете сделать. А выполнять Ваши указания он будет с заданной по времени периодичностью по расписанию.

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

Для запуска крона при старте системы, править что-либо в /etc/rc.conf нет необходимости. Здесь его можно только отключить. Все параметры запуска cron указаны в стартовом файле по-умолчанию /etc/defaults/rc.conf

daemony% cat /etc/defaults/rc.conf | grep cron
# Разрешать запуск планировщика? Да.
 cron_enable="YES"
# Какую запускать программу для этого?
 cron_program="/usr/sbin/cron"
# Следущую строку я не осилил: %)
# Handle DST transitions intelligently (YES/NO)
 cron_dst="YES"
# Дополнительные флаги для старта крон.
# (Этот параметр следует переопределять в /etc/rc.conf)
 cron_flags=""
# Куда наш крон будет сохранять изменения в системе?
# Если выставить параметр "NO" то не будет никуда.
 entropy_dir="/var/db/entropy"

Крон будет автоматически запускаться при старте системы и, повиснув демоном (системной службой), будет отслеживать все изменения в /etc/crontab и в пользовательских crontab'ах.

# ps -ax | grep cron<br> 1221 ?? Ss 0:02,30 /usr/sbin/cron -s<br>

Дефолтный конфигурационный файл /etc/crontab выглядит таким образом:

#
# root's crontab
#
# В первую очередь прописываются переменные окружения
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
# А с этого места начинаются задания, но для начала в качестве подсказки,
# описания что означает каждый столбец
#
#[мин][час][числа][месяц][дни_недели][юзер][команда]
#

# Следующая команда раз в пять минут создает такой себе
# "список отложенных задач". Подробнее: man atrun
*/5 * * * * root /usr/libexec/atrun

# А это задание заставляет один раз в час
# "проснуться" программу newsyslog которая,
# если нужно, ротирует (сжимает) лог файлы
0 * * * * root newsyslog

# Ну, а это задания, касающиеся ежесуточного аудита системы.
# По выполнении этих заданий на почту root приходят письма с
# отчетом что нового произошло на сервере за последние сутки.
01 3 * * * root periodic daily
15 4 * * 6 root periodic weekly
30 5 1 * * root periodic monthly

# Два раза в час происходит корректировка системных часов.
#1,31 0-5 * * * root adjkerntz -a

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

При редактировании crontab между колонками должен быть минимум один пробел, либо одна табуляция. Имя пользователя указывать необязательно. Если имя пользователя не указано, команду или скрипт крон выполнит от имени пользователя root.

Кроме root'ового crontab, существуют также пользовательские. Хранятся они в каталоге /var/cron/tabs/. Названия crontab файлов совпадают с именами пользователей, которым они принадлежат. Здесь также может находиться еще один crontab файл пользователя root, сгенерированный командой crontab -e. Все задания, указанные в crontab'ах каталога /var/cron/tabs/ выполняются cron'ом от имени того пользователя, что их создал. В пользовательском crontab нельзя опционально указать имя пользователя, от которого будет запускаться задание. Если crontab принадлежит пользователю daemony, то только от имени daemony (и с его правами) будут выполняться все команды в нем.

Чтобы создать или отредактировать собственный пользовательский crontab со списком запланированных заданий, выполните команду:

# crontab -e

При этом откроется Ваш редактор по-умолчанию (прописанный в переменной окружения EDITOR), в котором Вы сможете отредактировать свой crontab. Его формат будет полностью аналогичен /etc/crontab, за исключением столбца "имя пользователя" - его не будет. После редактирования сохраните файл и выйдите из редактора. Для просмотра Ваших запланированных заданий выполните команду.

# crontab -l<br>

Пользователь root также имеет возможность использовать данную утилиту с ключом -u [имя пользователя], для просмотра и внесения изменений в пользовательские crontab файлы

daemony% crontab -l -u daemony
#
# Crontab configuration file for daemony
#
SHELL=/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
HOME=/home/daemony
#
00 01 * * * ~/some-script.sh
#

Использование запланированных заданий обычно позволяет в немалой степени автоматизировать работу некоторых процессов в системе.


Главная > Программы > Cron