Linux cronВысокая

Cron service not running: причины и способы исправления

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

Обновлено 17 февраля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+CentOS 7+RHEL 8+Linux с systemd или SysVinit

Что означает ошибка "Cron service not running"

Ошибка "cron service not running" (или её русскоязычный аналог "служба cron не запущена") означает, что демон cron — системная служба, отвечающая за выполнение задач по расписанию — не активен в данный момент. Без работающего демона файлы crontab, в которые вы добавляете задания (например, через crontab -e), не будут выполняться. Вы можете увидеть эту проблему, когда:

  • Задачи, которые должны были сработать, не выполняются.
  • При попытке добавить задание через crontab -e выводится предупреждение.
  • Команда systemctl status cron (или service cron status) показывает состояние inactive (dead) или stopped.
  • В логах (/var/log/syslog или journalctl -u cron) отсутствуют записи о запуске задач.

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

  1. Служба не была запущена после установки. В некоторых дистрибутивах (например, минимальных установках) служба cron по умолчанию не активируется.
  2. Служба была вручную остановлена. Администратор или скрипт мог выполнить systemctl stop cron.
  3. Сбой службы. Демон cron аварийно завершился из-за повреждённой конфигурации (/etc/crontab, файлы в /etc/cron.d/) или нехватки системных ресурсов.
  4. Служба не включена в автозагрузку. После перезагрузки системы cron не стартует автоматически.
  5. Использование устаревшей системы инициализации (SysVinit) с отсутствующими символическими ссылками. В системах, использующих старый init, могут отсутствовать необходимые ссылки в /etc/rc?.d/.

Способ 1: Запуск и включение в автозагрузку через systemd (современные системы)

Большинство современных дистрибутивов (Ubuntu 16.04+, Debian 8+, CentOS 7+, RHEL 7+) используют systemd.

  1. Проверьте статус службы:
    systemctl status cron
    

    Или, если служба называется crond (часто в RHEL/CentOS/Fedora):
    systemctl status crond
    

    В выводе ищите строку Active:. Если она говорит inactive (dead) или failed, служба не работает.
  2. Запустите службу немедленно:
    sudo systemctl start cron
    

    Или для crond:
    sudo systemctl start crond
    
  3. Включите автозагрузку службы:
    sudo systemctl enable cron
    

    Эта команда создаст символические ссылки, гарантирующие запуск cron при каждой загрузке системы. Для crond используйте sudo systemctl enable crond.
  4. Перезапустите службу для применения изменений (если меняли конфиги):
    sudo systemctl restart cron
    
  5. Убедитесь, что служба активна и включена:
    systemctl is-active cron && echo "Active" || echo "Not active"
    systemctl is-enabled cron && echo "Enabled" || echo "Not enabled"
    

Способ 2: Управление через утилиту service (универсальный обёртка)

Утилита service является обёрткой, которая автоматически определяет, используется ли в системе systemd или классический SysVinit, и вызывает соответствующий инструмент. Она может быть удобна для написания скриптов, работающих на разных системах.

  1. Проверьте статус:
    sudo service cron status
    
  2. Запустите службу:
    sudo service cron start
    
  3. Включите автозагрузку (для SysVinit):
    sudo update-rc.d cron defaults
    

    Примечание: В системах на systemd команда sudo service cron enable обычно просто вызывает systemctl enable и работает идентично Способу 1.
  4. Остановите службу:
    sudo service cron stop
    

Способ 3: Ручное управление для SysVinit (старые системы)

В очень старых дистрибутивах (например, CentOS 6, Debian 7) или в специальных контейнерах может использоваться классический init.

  1. Проверьте, есть ли скрипт инициализации:
    ls -l /etc/init.d/cron
    

    Если файл отсутствует, служба cron, скорее всего, не установлена.
  2. Запустите службу напрямую:
    sudo /etc/init.d/cron start
    
  3. Включите автозагрузку через update-rc.d (Debian/Ubuntu) или chkconfig (RHEL/CentOS 6):
    • Для Debian/Ubuntu:
      sudo update-rc.d cron defaults
      
    • Для RHEL/CentOS 6:
      sudo chkconfig cron on
      

Способ 4: Диагностика, если служба не запускается или сразу падает

Если команды запуска не приводят к успеху, а status показывает failed:

  1. Просмотрите логи systemd для службы:
    sudo journalctl -u cron -b --no-pager
    

    Ключевые флаги: -u cron (фильтр по юниту), -b (логи с последней загрузки). Ищите строки с Failed или Error.
  2. Проверьте целостность конфигурационных файлов cron:
    • Основной файл: /etc/crontab.
    • Директории: /etc/cron.d/, /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/.
    • Проверьте синтаксис. Частые ошибки: неверный разделитель (в /etc/crontab 5 полей, а не 6), отсутствие пользователя в строке, несуществующий путь к команде.
    • Протестируйте синтаксис (для некоторых версий):
      sudo crontab -l -u root 2>/dev/null || echo "Проверьте /etc/crontab вручную"
      
  3. Убедитесь в наличии свободного места на диске:
    df -h /
    

    Если диск заполнен (>95%), демон может не стартовать.
  4. Проверьте, не конфликтует ли с другим ПО. Иногда пакеты вроде anacron могут влиять на поведение. Попробуйте временно переименовать каталог /etc/cron.d/ и перезапустить службу для проверки.

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

  • Регулярно проверяйте статус службы после обновлений системы или изменений в конфигурации.
    systemctl is-active cron || echo "Cron is down!"
    
  • Не редактируйте системные crontab-файлы (/etc/crontab, /etc/cron.d/*) напрямую без предварительной проверки синтаксиса. Используйте crontab -e для пользовательских заданий.
  • Перед перезагрузкой после настройки cron убедитесь, что служба включена в автозагрузку: systemctl is-enabled cron.
  • Настройте мониторинг. Добавьте простую проверку статуса cron в систему мониторинга (Zabbix, Nagios, Prometheus node_exporter) или в скрипт, который запускается чаще, чем раз в минуту.
  • Следите за место на системном разделе. Заполненный корневой раздел (/) — частая причина сбоев системных служб.

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

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

Полезное

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

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