SystemdDoctor
мешает работе cron расписание частое

Задача cron не выполняется

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Команда не найдена из-за короткого PATH

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

  2. Файл в /etc/cron.d отвергнут

    Файлы с точкой в имени и с правами шире 0644 игнорируются. Ошибки при этом нет.

  3. Нет перевода строки в конце crontab

    Последняя строка без перевода может быть отброшена. Это старая особенность, но встречается до сих пор.

  4. Задача выполняется, но её вывод теряется

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

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Записи о фактических запусках задач.

journalctl -u cron --since "1 day ago" --no-pager | grep CMD | tail -20

Задачи пользователя и системные файлы задач.

crontab -l && sudo ls -l /etc/cron.d/

Работает ли сама служба.

systemctl status cron --no-pager | head -6

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Команда не найдена из-за короткого PATH
Почему происходит
У задачи минимальное окружение. Программы из /usr/local/bin обычно доступны, а из домашних каталогов и менеджеров версий — нет.
Как проверить
Посмотрите, что пишет задача, направив вывод в файл.
crontab -l
command -v нужная-команда
Как исправить
Пишите полные пути или задайте PATH в начале crontab.
# в начале crontab:
# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2. Файл в /etc/cron.d отвергнут
Почему происходит
Файлы с точкой в имени и с правами шире 0644 игнорируются. Ошибки при этом нет.
Как проверить
Посмотрите файлы и их права.
ls -l /etc/cron.d/
Как исправить
Переименуйте файл без точек и поставьте права 0644 с владельцем root.
3. Нет перевода строки в конце crontab
Почему происходит
Последняя строка без перевода может быть отброшена. Это старая особенность, но встречается до сих пор.
Как проверить
Посмотрите конец файла.
tail -c 20 /var/spool/cron/crontabs/$USER | xxd | tail -2
Как исправить
Правьте crontab только командой crontab -e: она следит за форматом.
4. Задача выполняется, но её вывод теряется
Почему происходит
Вывод уходит письмом локальному пользователю. Без почтовой службы он исчезает, и кажется, что задача не работала.
Как проверить
Посмотрите записи cron о запуске задачи.
journalctl -u cron --since "1 day ago" --no-pager | grep -i CMD | tail -10
Как исправить
Перенаправляйте вывод в файл или в журнал через logger: тогда результат будет виден.
# 0 3 * * * /usr/local/bin/task.sh 2>&1 | /usr/bin/logger -t task

Пример вывода

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

CRON[4300]: (root) CMD (/usr/local/bin/backup.sh)
CRON[4301]: (root) MAIL (mailed 42 bytes of output but got status 0x004b)
# при перенаправлении вывода в файл:
backup.sh: line 6: rclone: command not found

Связанные ошибки

Где встречается чаще всего

Источники

  • crontab(5)
    Формат файлов задач и требования к правам.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено файлом в /etc/cron.d с точкой в имени.
    собственная проверка, systemd 255
    сверено 15 сентября 2026