команда работает в терминале, но не в cron — как найти причину и исправить

  • Обновлено
  • Чтение ≈ 4 минуты

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

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

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

#Симптом и границы применимости

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

#Возможные причины и признаки

Возможная причинаКак узнатьЧто делать
Нет демона cronArch использует таймеры systemd и не ставит cron автоматически.crontab отсутствует или cronie.service inactive/not-found.Подключить выбранный планировщик по документации либо использовать systemd timer.
Другая среда и PATHcron использует ограниченное окружение, не читает интерактивные файлы оболочки.Команда работает в shell, в cron пишет command not found.Указывать абсолютные пути и необходимые переменные.
Расписание или права записиНеверная запись, другой пользователь либо запрет на запись в рабочий каталог.crontab -l показывает другой файл; журнал содержит permission denied.Проверить владельца задания, каталог и журналы.

#Подробная диагностика и безопасные действия

  1. 1. Определите используемый планировщикОткройте терминал. Если команда crontab не найдена, cron не установлен либо недоступен в PATH. Система может пользоваться systemd timers, которые не надо смешивать с расписанием cron.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    command -v crontab
    systemctl status cronie.service --no-pager
    systemctl list-timers --all --no-pager
  1. 2. Убедитесь, что нужное задание находится у правильного пользователяВ терминале того пользователя, чьё задание не работает, посмотрите его список. no crontab for ... означает отсутствие личного расписания. Редактировать список используйте crontab -e, а не прямую запись в /var/spool/cron.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    id -un
    crontab -l
  1. 3. Проверьте синтаксис и среду выполненияЗапишите минуту, час, день, месяц, день недели. У пользовательского cron запись имеет пять временных полей и команду, без столбца имени пользователя. Для устранения проблем используйте абсолютный путь к программе из command -v, полный путь к файлам и отдельный файл журнала.
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    command -v КОМАНДА
    printf "%s\n" "$PATH"
    pwd
  1. 4. Посмотрите сообщения демонаНа Arch с cronie служба называется cronie.service. Если в журнале вообще нет запусков, проверьте автозагрузку, расписание и часовой пояс. Если служба отсутствует — пакет не установлен, запуска одной команды недостаточно.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    systemctl is-enabled cronie.service
    journalctl -b -u cronie.service --no-pager -n 100
    timedatectl status
  1. 5. Проверьте разрешения каталога и файла выводаИспользуйте реальный путь в записи cron. Задание может завершаться ошибкой, потому что оно работает из другого рабочего каталога, не имеет права записи или нужный том ещё не смонтирован.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    namei -l /ПУТЬ/К/СКРИПТУ
    ls -l /ПУТЬ/К/СКРИПТУ
    findmnt /ПУТЬ
  1. 6. Протестируйте команду в чистом окруженииЕсли вы понимаете, какой SHELL и PATH использует cronie, попробуйте запуск вручную с минимальным окружением; команда env -i временно убирает переменные только для этого запуска и не затрагивает систему. Не тестируйте так резервное копирование или опасный скрипт на рабочих данных.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    env -i HOME="$HOME" PATH=/usr/bin:/bin SHELL=/bin/sh /bin/sh -c "/ПУТЬ/К/СКРИПТУ"
  1. 7. Исправьте запись и проверьте следующий запускСделайте копию текущего crontab, затем откройте crontab -e и укажите абсолютные пути и согласованный журнал. Не используйте crontab -r: это удалит все задания. Проверяйте факт выполнения по результату приложения, а не лишь по наличию строки в журнале.
    Linux · Терминал (Bash)С осторожностью
    Изменяет задания только текущего пользователя; предварительно сохраняет список для отката.
    crontab -l > "$HOME/crontab-whelp-backup.txt"
    crontab -e
    crontab -l

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

#Как понять, что проблема устранена

Повторите исходное действие, из-за которого возникла неисправность, и сверяйте не только код завершения команды, но и прикладной результат. Сохраните вывод последней диагностической команды и записи журнала до и после исправления. Если ошибка повторяется, верните только изменённую настройку из резервной копии и передайте специалисту точный симптом, имя программы/службы, версию системы и необходимые фрагменты журнала без паролей и закрытых ключей.

#Что делать, если не помогло

Не применяйте случайные советы для другого дистрибутива: в Arch Linux особенно опасны частичные обновления пакетов, а в Rocky Linux — отключение SELinux или неконтролируемый перезапуск системных служб. Остановитесь после неуспешного безопасного шага, зафиксируйте фактическое сообщение и вернитесь к соответствующей причине. Для загрузки, разделов диска и единственного удалённого подключения используйте резервную копию и локальную консоль.

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

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

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