Задание cron не выполняется
Сломай-почини · Лёгкое · 15 мин · 100 баллов
Задание cron не выполняется
По расписанию должно работать задание: скрипт /usr/local/bin/backup.sh создаёт файл
/var/backups/heartbeat (для простоты — каждую минуту). Но файл не появляется: cron
будто бы ничего не делает.
Задача
Сделай так, чтобы:
- задание cron реально выполнялось по расписанию;
- файл
/var/backups/heartbeatсоздавался/обновлялся (свежее времени старта задания); - причина была устранена в кроне или скрипте, а не подменена ручным запуском.
Подсказки по подходу
- Что запланировано:
crontab -l(для другого пользователя —sudo crontab -l -u <user>). - Работает ли сам скрипт руками:
bash /usr/local/bin/backup.sh; echo $?. - Cron запускается с урезанным окружением: минимальный
PATH, без твоих алиасов — частая причина «руками же работает, а из крона нет». - Куда смотреть:
journalctl -u cron(или/var/log/syslogпо словуCRON). - Проверяй результат по кнопке «Проверить».
Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится.
Подсказки
Подсказка 1
Сначала посмотри, что вообще запланировано: crontab -l. Затем запусти скрипт руками:
bash /usr/local/bin/backup.sh — отрабатывает или падает?
Подсказка 2
Типичные причины: у скрипта нет бита +x, в crontab битая строка расписания (нужно
5 полей + команда), либо скрипт зовёт команду по короткому имени, а в cron-окружении
PATH урезан. Загляни в journalctl -u cron — там видно попытки запуска и ошибки.
Подсказка 3
Почини найденное: sudo chmod +x /usr/local/bin/backup.sh, поправь строку в
crontab -e, при необходимости пропиши полные пути в скрипте или
PATH=/usr/local/bin:/usr/bin:/bin первой строкой crontab. Подожди минуту и проверь
ls -l /var/backups/heartbeat.
Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.