Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья3 мин чтенияПросмотры1

Почему cron не запускает задачу, которая работает в терминале

Проверяем пользователя, расписание и окружение cron без ручного повторения потенциально опасного задания и без изменения crontab.

Механический таймер рядом с рабочим компьютером
В этой статье

Скрипт успешно выполняется вручную, но не даёт результата по расписанию. В терминале он получает окружение пользователя, рабочий каталог и интерактивные настройки. У cron условия другие. Диагностика начинается с точной записи задания и способа его исполнения, а не с добавления ещё одной копии в расписание.

Посмотрите таблицу текущего пользователя

Пример рассчитан на обычную реализацию cron в Debian или Ubuntu. Для просмотра используется:

crontab -l

Команда ничего не редактирует. Сообщение об отсутствии таблицы у текущего пользователя не означает, что на сервере вообще нет задания: оно может принадлежать другому аккаунту, находиться в системном расписании или запускаться таймером systemd.

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

Проверьте формат записи

В пользовательской таблице после полей расписания идёт команда. У системных таблиц есть дополнительное поле пользователя. Перенос строки между этими форматами без адаптации приводит к неожиданной интерпретации.

Проверьте минуту, час, день месяца, месяц и день недели. Условия дня месяца и дня недели имеют особенности совместной обработки в распространённых реализациях cron. Если расписание сложное, сверяйте его именно с документацией установленной версии, а не с ожиданием по внешнему виду строки.

Сравните окружение

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

Пример: скрипт открывает файл по относительному пути. В ручном тесте вы заранее перешли в каталог проекта, а cron запускает его из другого места. В этой ситуации проблема не в расписании. Нужно сделать рабочий каталог или пути явными в согласованной конфигурации задания.

Найдите вывод и факт запуска

Проверьте, куда направлены стандартный вывод и ошибки. Если они нигде не сохраняются и доставка локальной почты не настроена, важное сообщение может остаться незамеченным. Наличие строки запуска в системном журнале подтверждает запуск команды, но не успешный результат приложения.

В Debian-подобной системе журнал службы cron можно просмотреть за короткий период, если он поступает в journal:

journalctl -u cron.service --since '-1 hour' --no-pager

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

Не запускайте задачу повторно вслепую

Если предыдущий экземпляр ещё работает, повтор может создать конкуренцию или дубли. Сначала выясните, предусмотрена ли защита от параллельного запуска и безопасно ли повторение операции. Для проверки можно подготовить отдельный безвредный сценарий в тестовой среде, но не заменять им доказательство исправности рабочего задания.

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

Обсуждение0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.