Nginx Linux (Nginx)

Nginx — после миграции не выполняется задание по расписанию

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

После переноса сайта Nginx обслуживает страницы, но периодическая задача перестала выполняться. Важно не искать расписание в Nginx: cron, systemd timer, очередь CMS или панель хостинга запускают задание отдельно.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Как проверить результат
  5. Если проблема не устранена

#Симптом и границы применимости

После переноса сайта Nginx обслуживает страницы, но периодическая задача перестала выполняться. Важно не искать расписание в Nginx: cron, systemd timer, очередь CMS или панель хостинга запускают задание отдельно.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
Не перенесён планировщикФайлы сайта не переносят записи cron автоматически.На старом сервере было расписание, на новом нетСравнить задания для нужного пользователя
Неверный путь или версия PHP CLIВ новом окружении php, каталог и права могут отличаться.В журнале cron ошибка file not found / missing extensionПроверить команду и окружение
Задача запускается, но не завершаетсяНаличие cron не означает успешного завершения программы.Записи запуска есть, но нет результатаПроверить журнал самого сценария

#Пошаговая диагностика и исправление

  1. Выясните, что именно должно происходитьНазовите файл или команду задания, ожидаемый интервал и признак успешной работы: новый отчёт, отправленное письмо или запись в журнале. Проверьте историю последнего выполнения в CMS. Не запускайте вручную задания, которые могут отправить письма или изменить базу, до понимания их последствий.
  1. Найдите, кто запускает заданиеЧерез SSH проверьте cron для пользователя сайта, затем системные таймеры. Учтите, что в панели может быть отдельная таблица заданий, а systemctl list-timers покажет только таймеры systemd. Не вставляйте незнакомые команды из старого сервера без проверки.
  2. Вывод crontab -l показывает расписание только текущего пользователя
    Linux · Терминал (Bash)Команда
    Вывод crontab -l показывает расписание только текущего пользователя.
    crontab -l
    systemctl list-timers --all --no-pager
  1. Сравните путь и окружениеИз расписания выпишите абсолютный путь к интерпретатору, скрипту и рабочему каталогу. Узнайте точный путь к PHP CLI через command -v php и версию через php -v. У PHP-FPM и CLI могут быть разные версии и расширения. Если путь после переноса не существует, исправляйте его в панели расписания либо crontab владельца задачи.
    Linux · Терминал (Bash)Команда
    Запускать в оболочке того пользователя, который выполняет задачу.
    command -v php
    php -v
  1. Исследуйте причину по журналамНа Debian/Ubuntu ищите запуск CRON в системном журнале или journalctl, на иных системах — в штатном журнале планировщика. Если записей о запуске нет, проверьте службу cron и права. Если запуск есть, смотрите стандартный вывод и stderr самого сценария; лучше выделить отдельный ограниченный журнал.
  2. Пример для систем с cron и systemd; на других дистрибутивах имя службы отличается
    Linux · Терминал (Bash)КомандаНужен sudo
    Пример для систем с cron и systemd; на других дистрибутивах имя службы отличается.
    sudo systemctl status cron --no-pager
    sudo journalctl -u cron -n 60 --no-pager
  1. Проверяйте команду без побочных эффектовДля чтения проверьте существование файла, владельца и права. Не запускайте боевую отправку/оплату/очередь повторно. Если в сценарии предусмотрен режим --dry-run, используйте его согласно документации программы, а не придумывайте несуществующий параметр.
  1. Восстановите расписание и контроль результатаПосле проверки перенесите нужную запись через панель или crontab -e именно у пользователя задачи; сохраните прежнее расписание в копии. Укажите абсолютные пути и рабочий каталог при необходимости. Затем дождитесь очередного запуска и сравните конкретный результат с ожидаемым. Если работа повторяется дважды, проверьте, не активна ли она на обоих серверах.

#Как проверить результат

Убедитесь по журналу планировщика и журналу приложения, что задача выполнилась один раз в нужное время и привела к ожидаемому результату. Проверьте часовой пояс сервера и приложения.

#Если проблема не устранена

Если cron срабатывает, но результата нет, исследуйте права к файлам, сетевые зависимости и переменные окружения. Не относите проблему к Nginx, если веб-сервер только показывает сайт.

Так эту ошибку тоже называют

Источники и обновления

Для этой статьи пока не указаны источники. Мы отмечаем такие материалы и дополняем их при проверке.

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.