Cron — это программное обеспечение для настройки автоматического выполнения заданий (скриптов) в Unix/Linux подобных системах: Centos, Debian, Ubuntu и других. Этот планировщик задач работает аналогично во всех версиях операционных систем.
Добавить скрипт в Cron можно через специальный файл «crontab», содержащий список заданий для выполнения.
Как задавать время в Cron
Чтобы правильно добавить задание сначала указывается время и периодичность и в конце путь к исполняемому скрипту.
Указываем последовательно:
- минута (0-59);
- час (0-23);
- день (1-31);
- месяц (1-12);
- день недели (0-6);
- путь к исполняемому файлу.
Все значения указываются через пробел и при необходимости можно вводить множество значений через запятую.
Пример
Строка следующего вида подразумевает выполнение команды каждый день в 7 утра и 7 вечера:
0 7,19 * * * home/user1/script.sh
Настройка Cron в ISPmanager
Настроить Cron на хостинге проще всего через панель управления. Для примера разберем как производится настройка планировщика в ISPmanager 4.
- Открываем панель управления ISPmanager и переходим в «Планировщик» в разделе «Главное». Далее создаем новое задание, нажимая на кнопку «Создать».
- Заполняем поля в открывшемся редакторе и нажимаем «ОK»:
- Команда — здесь указываем полный путь (директорию) к исполняемому файлу программы или готовому рабочему скрипту.
- Описание — по желанию можно добавить краткое описание выполняемого задания.
- Расписание — добавляем расписание с возможностью выбора режима. Режим «Базовый» — с выбором доступных вариантов и «Экспертный» — самостоятельная настройка.
- Eсли есть возможность, нужно настроить получение отчетов по запуску заданий на почтовый адрес пользователя. Для этого открываем «Планировщик» → «Настройки» → «Адрес e-mail» и указываем адрес почты для получения. После чего нужно убедиться, что в настройках не стоит галочка напротив «Не отправлять отчет по e-mail».
Настройка 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 не выполняет скрипт.