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