Сборник сайтов Музыкальные открытки для вас Лампы, Светильники, Ксенон, Оптика, Выключатели, провод, Автолампы, Диспенсеры, Компрессоры, Сайт про Aion. База данных Aion

Проект "Исток"

Планировщик задач Cron

Среда 2 Декабрь 2009

Сегодня мне пришлось столкнутся с утилитой Cron. Про нее можно много нарыть в интернете и почитать мануалы.
Единственное что я знал так это то, что Cron — это демон-планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в заданное время.
Получается что эта утилита, позволяет запускать скрипты или задания в определенное время или периодически.

Настраивается он через основной файл crontab (располагается в каталоге /etc), где прописываются задания, которые будут выполняться.

Для редактирования файла crontab используется специальная одноименная программа crontab, позволяющая не прерывать процесс cron на время редактирования.
Так же для удобства пользователей во многих системах (Например: cPanel) есть специальные программы графического интерфейса управления cron.
Или можно использовать подключение к серверу по протоколу ssh версии 2. Для пользователей Windows подойдет SSH-клиент PuTTY, распространяющийся бесплатно.

Обычно файл crontab имеет вид:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
15 * * * * root cd / && run-parts –report /home/host/etc/cron
5 0 * * * root $HOME/bin/daily.job >> $HOME/log/daily 2>&1
#

Синтаксис используется следующий:
Минуты Часы День_месяца Месяц День_недели Пользователь Команда

Таблица crontab состоит из 6 колонок, разделяемых пробелами или табуляторами.
Первые пять колонок задают время выполнения, в них может находиться число, список чисел, разделённых запятыми, диапазон чисел, разделённых тире, или символ «*».
Все остальные символы в строке интерпретируются как выполняемая команда с её параметрами.

Т.е. наша запись: 15 * * * * root cd / && run-parts –report /home/host/etc/cron

означает следующее – в 15 минут каждого часа и каждого дня запускать команду «cd / && run-parts –report /home/host/etc/cron» от имени пользователя root.

В данном случае, в качестве задания используется запускаемый скрипт или программа, которая находится в указанном каталоге.

Пример 1. Нам необходимо запускать скрипт /home/host/script.php каждый час.
Формируем базовую строку:

* */1 * * * php /home/host/script.php

При запуске php скриптов, вместо имени пользователя «root» используется «php»

Пример 2.
Необходимо запускать скрипт каждые 3 часа в 0 минут часа каждую субботу и воскресенье:

0 */3 * * 0,6 user /home/user/script.sh

Этот пример можно записать и в другом виде:

0 0,3,6,9,12,15,18,21 * * 6,7 user /home/user/script.sh

Формат данных для таблицы crontab:
параметр значения
минуты 0-59
часы 0-23
дни месяца 1-31
месяцы 1-12
дни недели 0-7 (0 или 7 для воскресенья)

Воскресенье может указываться как 0 (американский стандарт), так и 7 (Российский стандарт).

Сrontab начинает работать немедленно после установки задания.