Настройка Cron вручную

Материал из wiki.owlhost.net
Перейти к: навигация, поиск

Cron - это фоновый процесс который позволяет запускать скрипты в назначенное время без каких-либо действий пользователя. Если нужно, чтобы с заданной периодичностью запускался скрипт или программа, то это задание для cron. Мы рассмотрим как настроить задания cron вручную. Сron может выполнять задачу не только для всей операционной системы, но и для каждого пользователя. Файлы, которые описывают, когда и что будет выполнено для пользователя расположены в каталоге /var/spool/cron/crontabs/. Доступ к данному каталогу есть у пользователя root.

Внутри каталога /var/spool/cron/crontabs/ для каждого пользователя создается файл по логину пользователя в котором и сохранены настройки. К примеру если в системе есть пользователь Admin и он настроил для себя задания cron, то создастся файл с настройками - /var/spool/cron/crontabs/admin. Пользователь доступа к этому файлу не имеет.

Проверить запущен ли процесс cron можно выполнив команду:

ps -uax | grep cron

Если процесс не выполняется то запустить его можно командой:

/etc/init.d/cron start.

Сron работает в поминутном режиме. Тоесть время выполнения задания можно задать с точностью до одной минуты. Основной конфигурационный файл cron - это /etc/crontab. Основная часть файла - это таблица в 7 столбиков, каждая строчка, которой описывает одно единственное задание. Файлы которые описывают задания для cron, часто называют crontab-файлами.

Пример файла /etc/crontab:

1
2
3
4
5

  1. m h dom mon dow user command

17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root admin -x /usr/sbin/crontest || ( cd / && run-parts --report /etc/cron.today )
47 6 * * 7 root admin -x /usr/sbin/crontest || ( cd / && run-parts --report /etc/cron.week )
52 6 1 * * root admin -x /usr/sbin/crontest || ( cd / && run-parts --report /etc/cron.month )

Каждой строке задаются значения 7-ми полей:

m - minute - минута - на какой минуте выполнять задание; диапазон значений - (0-59) h - hour - час - в котором часу выполнять задание; диапазон значений (0-23) dom - day of month - день месяца - в какие дни месяца выполнять задание; диапазон значений (1-31) mon - month - месяц - в какие месяцы года выполнять задание; диапазон значений (1-12) dow - day of week - день недели - в какие дни недели выполнять задание; диапазон значений (0-7, 0 и 7 - это воскресенье, дальше по порядку) user - имя пользователь - пользователь от имени которого будет выполнено задание command - исполняемая команда - команда, которая будет запущена на выполнение в указанное время.

В первых пяти полях можно указывать не только число из диапазона, но и диапазон чисел, перечисление чисел, диапазон с шагом. Символ * - означает любое значение.

Далее рассмотрим примеры заданий:

23 5 * * * root crontest - запускать команду crontest каждый день, в 5 часов 23 минут утра. 0 6 1 * * root crontest - запускать команду crontest первого числа каждого месяца в 6 часов утра. 30 14 * * 1-5 root crontest - запускать команду crontest в рабочие дни (кроме субботы и воскресенья) в 14 часа 30 минут. 0 23 2,6,8,16 2,7 * root crontest - запустить команду crontest 2,6,8,16-го числа, месяца февраля и июля в 23 часа. 30 0-23/5 * * * root crontest - запускать команду каждые три часа. То есть первый запуск будет в 0:30, затем в 5:30

  • /24 * * * * root crontest - запускать команду каждые 24 минут (*/24 - без пробелов).

Будьте внимательны с полями 3 и 5 - день месяца и день недели. Если числа есть в обеих полях, например, * 6 5 * 1 root crontest, то запись означает запускать задание в шесть часов 5-го числа каждого месяца или каждый понедельник, но не каждый понедельник 5-го числа.