linux-labs

← Практика

Задание cron не выполняется

Сломай-почини · Лёгкое · 15 мин · 100 баллов

Задание cron не выполняется

По расписанию должно работать задание: скрипт /usr/local/bin/backup.sh создаёт файл /var/backups/heartbeat (для простоты — каждую минуту). Но файл не появляется: cron будто бы ничего не делает.

Задача

Сделай так, чтобы:

  1. задание cron реально выполнялось по расписанию;
  2. файл /var/backups/heartbeat создавался/обновлялся (свежее времени старта задания);
  3. причина была устранена в кроне или скрипте, а не подменена ручным запуском.

Подсказки по подходу

  • Что запланировано: 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-ВМ для задания — обычно пара секунд. После работы её можно остановить.