Отслеживание CRON или что делать если задание CRON не выполняется


Если CRON не выполняется — причины может быть две — конфигурация самой службы на сервере и скрипт, который помещен в CRON. Начинать диагностику всегда следует с просмотра логов.



Что делать если задание CRON не выполняется


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



Задание в общем случае выглядит так:

5 4 * * * cd /home/site/ && /usr/bin/php somescript.php


CRON не выполняется

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



Т.е. авторизоваться на сервере по SSH с реквизитами пользователя для которого прописан CRON и затем выполнить

cd /home/site/ && /usr/bin/php somescript.php

Если скрипт содержит ошибки — они будут выведены в консоль, когда ошибок нет — поможет разработчик скрипта и CRON ни при чем.



При отсутствии ошибок в скрипте и успешном его выполнении из консоли следует отслеживать сами срабатывания. Самый простой способ — анализ логов.



Демон  CRON записывает информацию о каждом срабатывании в  /var/log/syslog.



Также можно скорректировать задание таким образом, чтобы запись в лог была частью задания — например, добавив конструкцию && echo `date` >> /var/log/cronlog



Задание примет такой вид

5 4 * * * cd /home/site/ && /usr/bin/php somescript.php && echo `date` >> /var/log/cronlog


Каждый раз при успешном выполнении скрипта в файл /var/log/cronlog будет дописываться время выполнения. Если время дописывается — задание выполняется успешно.

Читайте также про запуск CRON заданий из директории /etc/cron.d

Сказать спасибо