Linux

Решение распространённых проблем с заданиями cron в Linux

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

Обновлено 20 июля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04 LTSUbuntu 22.04 LTSDebian 11CentOS 8

Введение

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

Требования

  • Доступ к системе через SSH или консоль с правами администратора (sudo).
  • Версии операционных систем:
    • Ubuntu 20.04 LTS / 22.04 LTS
    • Debian 11
    • CentOS 8
  • Базовые инструменты: crontab, systemctl, journalctl, grep, tail.

Пошаговая инструкция

Шаг 1: Проверьте синтаксис файла crontab

Убедитесь, что записи в вашем crontab имеют правильный формат. Неправильное расположение звёздочек, пробелов или отсутствие исполняемой части часто приводят к silencе‑сбой.

# Просмотрите текущий crontab
crontab -l

# Если нужно отредактировать
crontab -e

💡 Совет: Сохраните действующий crontab перед редактированием: crontab -l > ~/cron_backup.$(date +%F).

Шаг 2: Убедитесь в правильности прав доступа и владельца

Задание может игнорироваться, если файл crontab принадлежит не тому пользователю или имеет неверные права. Для пользовательских заданий:

# Экспортируйте crontab во временный файл
crontab -l > /tmp/user.cron

# Верните правильные владельца и права
sudo chown $USER:$USER /tmp/user.cron
sudo chmod 600 /tmp/user.cron

# Вставьте обратно
crontab /tmp/user.cron

Для системных заданий (/etc/crontab, /etc/cron.d/*) убедитесь, что они доступны только для чтения владельцем.

Шаг 3: Просмотрите системный и пользовательский журнал событий cron

Cron записывает информацию о выполнении заданий в /var/log/syslog (запись с тегом CRON) или в /var/log/cron.log (если активен cron.log). Проверьте последние записи:

# Системный журнал (Debian/Ubuntu)
sudo grep CRON /var/log/syslog | tail -n 20

# Альтернативный журнал (некоторые дистрибутивы)
sudo tail -n 50 /var/log/cron.log

Ищите сообщения об ошибках, коды завершения (cron: не удалось выполнить команду) и время выполнения.

Шаг 4: Временно отключите задание для тестирования

Чтобы убедиться, что именно это задание является причиной проблемы, временно отключите его:

# Откройте crontab для редактирования
crontab -e

# Добавьте # в начало строки задания (например, `# */5 * * * * /path/to/script.sh`)
# Сохраните и выйдите

После редактирования перезапустите cron-сервис:

sudo systemctl restart cron

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

Шаг 5: Проверьте конфигурацию cron-сервиса

Если задания по-прежнему не выполняются, проверьте сам демон cron:

# Статус службы
systemctl status cron

# Включён ли сервис (автоматический запуск при загрузке)
systemctl is-enabled cron

# Перезапустите при необходимости
systemctl restart cron

Если служба не запускается, выполните:

journalctl -u cron -b

и следуйте сообщениям об ошибках (часто это отсутствие зависимых пакетов, например cron или bsdmainutils).

Проверка результата

После выполнения шагов убедитесь, что задания снова работают:

  1. Проверьте журнал событий cron на наличие успешных выполнений:
    sudo grep "COMMAND(exec)" /var/log/syslog | tail -n 5
    
  2. Если задание выполняется по расписанию, вы увидите новую запись с командой.
  3. Для пользовательских заданий также можно проверить crontab -l и выполнить задание вручную (/path/to/script.sh), чтобы убедиться в корректности пути.

Возможные проблемы

СимптомВероятная причинаРешение
Задание не появляется в журнале событийНеправильный синтаксис crontab или опечатка в путиПроверьте синтаксис, используйте crontab -l > /tmp/check && sudo crontab /tmp/check
cron не запускается после обновленияОтсутствие зависимого пакета или повреждённая конфигурацияВыполните sudo apt-get install --reinstall cron (Debian/Ubuntu) или sudo yum reinstall cronie (RHEL/CentOS)
Задание запускается с ошибкой доступа к файлуНекорректный рабочий каталог или права на целевой файлУбедитесь, что целевой файл доступен (chmod 644 /path/to/file) и укажите правильный рабочий каталог в задании
Задание выполняется не по расписаниюИспользование неправильных единиц времени (например, */5 вместо 0 */5)Проверьте формат minute hour day month weekday с помощью man crontab
Задание выполняется, но не выполняет ожидаемого действияОшибки в скрипте, скрытые от cronДобавьте set -e в скрипте или проверьте stderr в журнале событий cron

Выполните описанные шаги и не забудьте перезапустить cron после каждого изменения. После этого большинство проблем с заданиями cron устраняются менее чем за 15 минут. Если проблема сохраняется, проверьте системный журнал (journalctl -u cron) на предмет дополнительных сообщений об ошибках.

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

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

Полезное

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