Cron — это программное обеспечение для настройки автоматического выполнения заданий (скриптов) в Unix/Linux подобных системах: Centos, Debian, Ubuntu и других. Этот планировщик задач работает аналогично во всех версиях операционных систем.

Добавить скрипт в Cron можно через специальный файл «crontab», содержащий список заданий для выполнения.

Файл crontab

Пример пустого файла crontab

Как задавать время в Cron

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

Указываем последовательно:

  • минута (0-59);
  • час (0-23);
  • день (1-31);
  • месяц (1-12);
  • день недели (0-6);
  • путь к исполняемому файлу.

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

Настройка и запуск cron на веб-хостинге

Пример

Строка следующего вида подразумевает выполнение команды каждый день в 7 утра и 7 вечера:

0 7,19 * * * home/user1/script.sh

Настройка Cron в ISPmanager

Настроить Cron на хостинге проще всего через панель управления. Для примера разберем как производится настройка планировщика в ISPmanager 4.

  1. Открываем панель управления ISPmanager и переходим в «Планировщик» в разделе «Главное». Далее создаем новое задание, нажимая на кнопку «Создать».
    Настройка Cron в ISPmanager
  2. Заполняем поля в открывшемся редакторе и нажимаем «ОK»:
  • Команда — здесь указываем полный путь (директорию) к исполняемому файлу программы или готовому рабочему скрипту.
  • Описание — по желанию можно добавить краткое описание выполняемого задания.
  • Расписание — добавляем расписание с возможностью выбора режима. Режим «Базовый» —  с выбором доступных вариантов и «Экспертный» — самостоятельная настройка.

Настройка Cron в ISPmanager

  1. Eсли есть возможность, нужно настроить получение отчетов по запуску заданий на почтовый адрес пользователя. Для этого открываем «Планировщик» → «Настройки» → «Адрес e-mail» и указываем адрес почты для получения. После чего нужно убедиться, что в настройках не стоит галочка напротив «Не отправлять отчет по e-mail».

Настройка Cron в ISPmanager

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

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

0 7,19 * * * /usr/bin/wget -O - -q -t 1 ‘http://example.com/file.php’

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

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

0 7,19 3* 7 /usr/bin/wget -O - -q -t 1/ / ‘http://example.com/file.php’ /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 ‘http://example.com/file.php’ > /yourdirectory/log.txt

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