Incron — интерактивный планировщик заданий для Linux

Visitors have accessed this post 1233 times.

Настройка Cron (Linux)

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

crontab -e

Флаг -e показывает, что необходимо отредактировать расписание запуска для текущего пользователя. После запуска команды вам нужно будет прописать правила в открывшемся временном файле. Обратите внимание на то, что правила будут запускаться только под тем пользователем, под которым вы их добавляли (если вам нужен запуск cron от пользователя root, то и правила нужно устанавливать от него).

crontab

Пользовательские crontab-файлы находятся в следующих каталогах (зависит от вашей ОС):

/var/spool/cron /var/spool/cron/crontabs /var/spool/cron/tabs

Для работы с crontab-файлами используется команда crontab: crontab -e — открыть для редактирования (в текстовом редакторе по умолчанию) crontab-файл пользователя под которым выполняется команда crontab <имя_файла> — заменить старый crontab-файл на новый crontab -l — отобразить содержимое crontab-файла текущего пользователя crontab -r — удалить crontab-файл для текущего пользователя

Под root можно редактировать crontab файлы пользователей crontab -u <имя_пользователя> -e

Структура записи crontab

* * * * * команда_на_исполнение ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └───── день недели (доступные значения: 0 — 7) (0 и 7 — воскресенье; 1-6: с понедельника по субботу) │ │ │ └────────── месяц (доступные значения: 1 — 12 (с января по декабрь)) │ │ └─────────────── день (доступные значения: 1 — 31) │ └──────────────────── час (доступные значения: 0 — 23) └───────────────────────── минута (доступные значения: 0 — 59)

Специальные символы

Астериск (*) — означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами. Дефис (-) — обозначает диапазон чисел. Например, запись 1-5 будет обозначать числа 1, 2, 3, 4 и 5. Запятая (,) — обозначает перечисление значений. Например, значения 1, 3, 5 в поле «день недели» будут интерпретированы как «понедельник, среда, пятница» Слэш/косая черта (/) — используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать /<целое>. Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц. Октоторп/хэш/решетка (#) — все строки, начинающиеся с этого символа считаются комментариями, и не обрабатываются.

Предустановленные шаблоны

Данные ключевые слова можно использовать до пользовательской команды.

Ключевое слово Описание Эквивалент
@reboot Запустить при загрузке @reboot
@yearly (or @annually) Запустить один раз в год в полночь 1 января 0 0 1 1 *
@monthly Запустить один раз в месяц в полночь первого числа месяца 0 0 1 * *
@weekly Запустить один раз в неделю в полночь воскресенья 0 0 * * 0
@daily Запустить один раз в день в полночь 0 0 * * *
@hourly Запустить один раз в час (в начале часа) 0 * * * *

Установка и настройка Incron

Установка стандартна: apt-get install incron

Первое действие при настройке — ограничить список людей, которые могут использовать Incron. Сначала командой «incrontab -l» просмотрите список разрешенных пользователей, потом командой «incrontab -e» отредактируйте его. Сам список содержится в конфигурационном файле /etc/ Если его удалить, то Incron смогут использовать все пользователи, зарегистрированные в системе.

Синтаксис конфигурационного файла простой: [путь] [маска] [команда] Путь — это путь к контролируемым файлам, маска — события с этими файлами, а команда — команда, которая будет выполнена при возникновении события.

Настройка Cron для запуска PHP-скрипта

В некоторых случаях бывает так, что автоматическое выполнение PHP-скрипта невозможно. Чаще всего подобные ошибки случаются при запуске PHP-скрипта через локальный интерпретатор. В таких случаях требуется запустить Cron вручную, для чего лучше всего использовать программу wget. В приведенном ниже примере «» нужно заменить на реальный путь к вашему PHP-файлу.

0 7,19 * * * /usr/bin/wget -O — -q -t 1 ‘’

Полезные примеры

Разберем уже приведенный выше пример, немного изменив параметры:

0 7,19 3* 7 /usr/bin/wget -O — -q -t 1/ / ‘’ /dev/null/2>&1

Запуск PHP-скрипта будет происходить в 7:00 и 19:00 каждого воскресенья и 3 числа каждого месяца (совпадения дня недели и числа не имеют значения).

/dev/null/2>&1 — эта команда Cron добавляется в конце сценария (строки), для выполнения скрипта в фоновом режиме без уведомлений.

Помимо этого, можно добавлять другие полезные опции в конце строки планировщика Cron. Как например, для отладки запускаемого скрипта, нужен лог-файл выполнений.

То есть, если мы хотим настроить вывод результатов запуска задания Cron в определенный файл, можно изменить команду следующим образом:

0 7,19 3* 7 /usr/bin/wget -O — -q -t 1 ‘’ > /yourdirectory/

Просмотрев такой лог, можно понять причину, почему  Cron не выполняет скрипт.