Linux CRON001Средняя

Исправление неработающих задач cron в Linux (код CRON001)

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

Обновлено 30 июня 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, Debian 11, CentOS 8

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

Ошибка CRON001 — это неспецифический идентификатор, используемый в FixPedia для обозначения ситуации, когда запланированная задача cron не выполняется. Это может проявляться отсутствием ожидаемого вывода, отсутствием записей в журналах или неподтвержденным статусом задачи в crontab -l. Симптомы обычно появляются в журналах системы или в почте, если задача настроена на отправку уведомлений.

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

  • Служба cron не запущена – система не управляет демоном cron.
  • Неправильные права доступа – скрипты, на которые ссылается задача, недоступны для чтения пользователем, от имени которого работает cron.
  • Синтаксические ошибки в crontab – опечатки в расписании или командах предотвращают запуск задачи.
  • Отсутствие необходимых оболочек или переменных окружения – команды, которые зависят от определённых shell-функций, не выполняются.
  • Конфликт с другими сервисами – например, системные таймеры systemd могут переопределять тот же cron-задание.
  • Ошибки в скриптах – ошибки в скриптах приводят к преждевременному завершению работы, что cron регистрирует как «завершение с ошибкой».

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

Способ 1: Проверка состояния службы cron

  1. Проверьте, работает ли служба cron в данный момент:
    systemctl status cron
    
    Если служба остановлена, запустите её:
    systemctl start cron
    
    Разрешите автоматический запуск при загрузке системы:
    systemctl enable cron
    

⚠️ Важно: Если служба постоянно падает, проверьте системный лог: journalctl -u cron.

Способ 2: Проверка и исправление crontab

  1. Выведите текущую конфигурацию crontab:
    crontab -l
    
  2. Проверьте синтаксис команд вручную, запустив каждую из них в терминале (замените user на реального владельца):
    sudo -u user <command>
    
  3. Если задача повреждена, отредактируйте crontab:
    crontab -e
    
    Убедитесь, что путь к скрипту абсолютный, а команда имеет правильный синтаксис (* * * * * /path/to/script.sh).

Способ 3: Анализ журналов cron

  1. Откройте журнал событий cron в режиме реального времени:
    journalctl -u cron -f
    
    Ищите строки CRON или systemd[1]: Started Cron daemon.
  2. Если вы видите CRON_ERROR: errno 2, это означает, что исполняемый файл не найден.
  3. В старых дистрибутивах проверьте системный лог:
    grep CRON /var/log/syslog
    

Способ 4: Проверка окружения и прав доступа

  1. Убедитесь, что исполняемый скрипт доступен для чтения пользователем, от имени которого запускается cron (обычно root или dedicated user):
    chown user:group /path/to/script.sh
    chmod 644 /path/to/script.sh
    
  2. Добавьте SHELL /bin/bash в начало crontab, если скрипт использует функции bash.
  3. Убедитесь, что все зависимые бинарные файлы доступны:
    sudo -u user bash -c 'PATH=$PATH:/additional/path && /path/to/script.sh'
    

Способ 5: Перезапуск службы cron

  1. Перезапустите службу cron, чтобы применить любые изменения конфигурации:
    systemctl restart cron
    
  2. Проверьте статус ещё раз:
    systemctl status cron
    

Способ 6: Альтернативный подход – переход на systemd таймеры

Если задачи cron по-прежнему нестабильны, рассмотрите возможность миграции на таймеры systemd, которые интегрируются с менеджером служб:

  1. Создайте единичный сервис-файл /etc/systemd/system/mytimer.service с нужной командой.
  2. Создайте таймер-файл /etc/systemd/system/mytimer.timer с расписанием.
  3. Включите и запустите таймер:
    systemctl enable mytimer.timer
    systemctl start mytimer.timer
    

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

  • Регулярно проверяйте журналы – настройте автоматический экспорт логов cron в /var/log/cron.
  • Используйте абсолютные пути для скриптов и исполняемых файлов.
  • Проверяйте crontab после любых изменений в системе.
  • Настройте уведомления – включите MAILTO в crontab, чтобы получать оповещения о сбоях.
  • Документируйте зависимости – ведите список необходимых переменных окружения и оболочек для каждой задачи.
  • Тестируйте задачи вручную перед тем, как доверить их cron, чтобы убедиться, что они работают в нужном контексте пользователя.

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

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

Почему задача cron не выполняется?
Как проверить, выполняется ли задача cron?
Что делать, если задача cron не запускается после изменения crontab?
Как гарантировать выполнение задачи на разных дистрибутивах?

Полезное

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

Эта статья помогла вам решить проблему?