Rocky Linux Rocky Linux

Rocky Linux: команда работает в терминале, но не в cron

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

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

В этой статье
  1. Когда возникает проблема и к каким системам относится
  2. Основные причины: как отличить одну от другой
  3. Пошаговая диагностика и устранение неисправности
  4. Как убедиться, что неисправность устранена
  5. Если предложенный способ не сработал

#Когда возникает проблема и к каким системам относится

Команда работает в терминале, но из cron не выполняется или даёт другой результат. Проверьте, кто запускает задание, есть ли исполняемый путь, рабочий каталог, время и доступ к журналу. Rocky Linux с cronie; задания запускаются от конкретного пользователя, поэтому окружение cron не совпадает с интерактивной оболочкой.

#Основные причины: как отличить одну от другой

Возможная причинаКак узнатьЧто делать
В cron другой PATHИспользована команда без абсолютного путиcommand not found в журнале заданияУказать абсолютные пути к программам
Иной рабочий каталог и средаСкрипт обращается к ./файлу, HOME или переменным профиляВ журнале No such file или пустое значениеУказывать явно каталоги и конфигурацию
cron не запускал заданиеНет cronie, некорректное расписание или пользовательВ журнале нет запуска CMDПроверить службу и запись без изменения прав

#Пошаговая диагностика и устранение неисправности

  1. Шаг 1. Уточните, какой пользователь создал заданиеВыполните команды в терминале того же пользователя. crontab -l показывает именно его таблицу; sudo crontab -l покажет задания root и может запутать. Если crontab отсутствует, проверьте установку cronie штатным способом.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    id
    command -v crontab
    crontab -l
  1. Шаг 2. Проверьте службу cron на Rocky LinuxСистемная служба обычно называется crond.service. В status должно быть active, но это не доказывает, что отдельное задание успешно завершилось. Если inactive — сначала выясните, должна ли служба быть включена и кто её обслуживает.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    systemctl status crond.service --no-pager
    systemctl is-enabled crond.service
  1. Шаг 3. Посмотрите, запускал ли cron нужную командуВ журнале ищите строки CROND, PAM, CMD и время. В зависимости от конфигурации записи могут оказаться в /var/log/cron или journald. Не храните пароль в строке cron, так как логи способны её показать.
  2. Терминал Rocky Linux; нужны административные права
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    sudo journalctl -b -u crond --no-pager -n 120
    sudo tail -n 60 /var/log/cron 2>/dev/null || true
  1. Шаг 4. Сравните путь и доступность программыВ crontab указывайте абсолютный путь к исполняемому файлу, например /usr/bin/python3, который найден командой command -v. Не полагайтесь на алиасы оболочки или автоматически подгружаемый ~/.bashrc.
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    command -v python3 || true
    printf "user=%s home=%s PATH=%s\n" "$USER" "$HOME" "$PATH"
  1. Шаг 5. Воссоздайте ограниченную среду для тестаТест ниже запускает только вывод окружения, не ваше приложение. env -i показывает, что при отсутствии HOME, PATH и LANG программа может вести себя иначе. Для теста реального задания создайте отдельный журнал и укажите реальные абсолютные пути.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    env -i HOME="$HOME" PATH=/usr/bin:/bin /usr/bin/env | sort
  1. Шаг 6. Проверьте расписание и строку заданияВ пользовательском crontab пять полей времени, затем команда; в /etc/crontab есть дополнительное поле пользователя. Не переносите строку между форматами без изменений. После редактирования crontab -e проверьте crontab -l; не добавляйте % без экранирования, так как cron его трактует специально.
    Linux · Терминал (Bash)С осторожностью
    Терминал Rocky Linux; административные права не обязательны. Меняет настройки/состояние службы: сначала копия и возможность отката.
    crontab -l
    crontab -e

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Шаг 7. Запустите команду от имени того же пользователя и проверьте выводПроверьте абсолютные пути к скрипту и рабочим файлам, сделайте контрольный запуск вручную с теми же переменными. На следующий временной интервал сравните данные приложения и журнал, а не только факт появления строки CMD.
  2. Терминал Rocky Linux; нужны административные права
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    id
    ls -l /путь/к/скрипту.sh
    sudo journalctl -u crond --since "1 hour ago" --no-pager -n 60

#Как убедиться, что неисправность устранена

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

#Если предложенный способ не сработал

Если cron запускает команду, но та не работает, сохраните её stdout/stderr в закрытый журнал, проверьте абсолютные пути, переменные и SELinux. Не запускайте задание от root лишь ради обхода прав.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.