Linux CRON001Средняя

Исправление ошибки Cron CRON001: отсутствует вывод задания

Статья объясняет, почему cron-задания не выводят результаты, и показывает, как быстро вернуть их работу. Вы узнаете, как проверить задание, настроить логирование и предотвратить повторение ошибки.

Обновлено 10 июля 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04 LTSDebian 12RHEL 9

Что означает ошибка CRON001

Ошибка CRON001 (часто отображается как error: CRON output missing) сигнализирует, что запланированное cron-задание завершилось, но не произвело никакого вывода в стандартный поток или настроенный лог. Cron ожидает, что задание что-то запишет (например, для отслеживания или почтового уведомления), и отсутствие вывода воспринимается как «задание молчит».

Типичные ситуации:

  • Задание должно записывать данные в /var/log/..., но этого не происходит.
  • Вывод перенаправляется почтовой службе, которая не доставляет сообщения.
  • Задание падает с ошибкой, и эта ошибка не попадает в журнал.

Причины возникновения

  1. Вывод проигнорирован – cron перенаправляет стандартный вывод в почтовую службу, которая не настроена (MAILTO пусто) или не работает.
  2. Отсутствует PATH/SHELL – без явного SHELL и PATH crontab команда может не выполниться или завершиться с ошибкой silenciously.
  3. Недостаточные права – задание запускается от имени пользователя без прав на запись в целевой лог-файл.
  4. Ошибка в команде – сама команда может упасть с неуловимой ошибкой, ничего не выведя.
  5. Драйвер или зависимость отсутствует – внешняя команда, скрипт или утилита не установлены в среде cron, что приводит к немедленному завершению работы.

Способы решения

Способ 1: Явно перенаправьте вывод в лог

Большинство cron-заданий должны записывать результаты в файл, а не полагаться на почту. Добавьте перенаправление в crontab:

# Пример записи в crontab
0 2 * * * /usr/local/bin/backup.sh > /var/log/backup.log 2>&1

💡 Совет: Используйте >>, если вам нужен апендинг; 2>&1 объединяет стандартный вывод и ошибки.

Способ 2: Настройте MAILTO

Если вам нужны уведомления по почте, установите MAILTO в начале crontab:

MAILTO=admin@example.com
0 3 * * * /path/to/script.sh

Теперь любой вывод будет отправлен указанному пользователю.

Способ 3: Проверьте задание вручную

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

sudo -u <user> /bin/bash -c "/path/to/script.sh"

Это показывает, есть ли действительно что-то на выходе, или скрипт падает с ошибкой.

Способ 4: Установите переменные окружения

Добавьте SHELL и PATH в начало crontab:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

0 4 * * * /home/user/scripts/report.sh > /var/log/report.log

Способ 5: Проверьте системный журнал cron

Cron записывает каждую попытку в /var/log/syslog (или journalctl -u cron). Поиск ключевых слов поможет выявить скрытые ошибки:

grep "CRON output missing" /var/log/syslog
journalctl -u cron -u --since "2026-07-09 00:00:00"

Если лог показывает более подробную ошибку (например, command not found), исправьте её напрямую.

Профилактика

  • Всегда тестируйте задания вручную перед тем, как они попадут в cron.
  • Логируйте явно – добавляйте > /var/log/job.log 2>&1 ко всем важным заданиям.
  • Следите за MAILTO – если вам не нужны почтовые уведомления, оставьте его пустым.
  • Регулярно проверяйте логи cron – используйте крон-задание для поиска новых записей CRON output missing.
  • Используйте */bin/bash в начале crontab, чтобы обеспечить стабильную среду выполнения.

С помощью этих шагов вы быстро вернёте контроль над своими автоматизированными заданиями и предотвратите будущие «молчаливые» сбои.

Часто задаваемые вопросы

Что означает сообщение «Cron output missing»?
Почему cron-задания перестают выводить результат?
Как проверить задание вручную?
Как предотвратить повторение ошибки?

Полезное

Проверьте текущую конфигурацию crontab
Настройте обработку вывода
Запустите задание вручную
Установите стандартные переменные окружения
Проверьте журнал cron