#Как проявляется проблема
Скрипт корректно выполняется в терминале пользователя, но по расписанию cron его результат не появляется и лог остаётся пустым. Ниже — порядок проверок от безопасных и обратимых действий к более сложной диагностике.
#Что следует проверить в первую очередь
- Проверьте службу планировщика: Выполните
systemctl status crondи убедитесь, что служба запущена. Посмотрите время системы и используемое расписанием часовое правило. - Проверьте формат задания: Посмотрите
crontab -lнужного пользователя и различайте личный crontab с пятью полями и/etc/crontabс дополнительным полем пользователя. - Укажите полные пути: Cron имеет ограниченный PATH. Используйте полные пути к интерпретатору, исполняемому файлу и рабочим каталогам, особенно если сценарий зависит от относительных путей.
#Пошаговое решение
- Зафиксируйте исходный симптомСкрипт корректно выполняется в терминале пользователя, но по расписанию cron его результат не появляется и лог остаётся пустым. Запишите точный текст ошибки, версию дистрибутива (
cat /etc/os-release) и время появления сбоя. На удалённом сервере убедитесь, что есть резервный доступ, прежде чем менять сеть или загрузку. - Проверьте исходные условия безопасноСначала соберите сведения командами чтения и сохраните копию изменяемого файла конфигурации. Не отключайте SELinux, файрвол, проверку подписей или TLS для быстрого обхода ошибки.
- Проверьте службу планировщикаВыполните
systemctl status crondи убедитесь, что служба запущена. Посмотрите время системы и используемое расписанием часовое правило. - Проверьте формат заданияПосмотрите
crontab -lнужного пользователя и различайте личный crontab с пятью полями и/etc/crontabс дополнительным полем пользователя. - Укажите полные путиCron имеет ограниченный PATH. Используйте полные пути к интерпретатору, исполняемому файлу и рабочим каталогам, особенно если сценарий зависит от относительных путей.
- Проверьте права и окружениеСверьте владельца, бит исполнения и нужные переменные окружения. Не запускайте задачу от root только ради обхода ошибки доступа.
- Проверьте вывод ошибокНастройте временное безопасное перенаправление stdout/stderr в журнал с ограниченными правами, дождитесь ближайшего запуска и сравните результат с ручным выполнением от того же пользователя.
- Проверьте, устранена ли неисправностьВернитесь к исходному действию: Скрипт корректно выполняется в терминале пользователя, но по расписанию cron его результат не появляется и лог остаётся пустым. Проверьте его после внесённого изменения и сравните результат с первым тестом. Если сбой исчез, сохраните рабочую настройку; если нет — не повторяйте опасные операции.
- Если проблема осталасьПосле каждого изменения повторяйте исходную проверку и сравнивайте вывод с записанным. При неудаче верните одно изменение и приложите к обращению очищенные от секретов журналы.
#Как убедиться в результате
Успешное исправление означает, что исходный симптом перестал воспроизводиться при тех же условиях. Если изменено несколько параметров, верните их по одному, чтобы определить реальную причину.
#Когда нужна дополнительная помощь
После каждого изменения повторяйте исходную проверку и сравнивайте вывод с записанным. При неудаче верните одно изменение и приложите к обращению очищенные от секретов журналы.