Практическое задание

Эта задача — шаг 5 курса «Cron: задачи по расписанию»

Окружение crontab: PATH и почта

средне~7 мин

Утилиты отчётов лежат в /opt/tools/bin, и rotate-reports внутри вызывает соседнюю report-gen без пути — в урезанном окружении cron она не найдётся. В crontab root задай переменные: MAILTO=cron-alerts@example.org и PATH, в котором есть /opt/tools/bin, а также системные /usr/bin и /bin. Ниже добавь задачу, запускающую rotate-reports каждый день в 02:30 — команду запиши без пути, пусть cron найдёт её через PATH.

Что потренируешь:
  • cron
  • crontab
  • переменные окружения
  • PATH
  • MAILTO

Разбор темы

Задачи cron запускаются не из твоей сессии, а с минимальным окружением: PATH обычно ограничен /usr/bin:/bin, поэтому команды из /usr/local/bin или /opt/…/bin и скрипты, вызывающие их по имени, в кроне падают с «command not found». Окружение задают строками ИМЯ=значение прямо в crontab — без export, и действуют они на все задачи ниже по файлу. MAILTO указывает адрес, куда cron отправит вывод задачи; пустое значение отключает письма. Проверить, найдётся ли команда в заданном окружении, можно через env -i PATH=… sh -c 'command -v имя'.

Что проверяется

  1. задан MAILTO=cron-alerts@example.org
  2. PATH в crontab находит утилиты отчётов
  3. rotate-reports запускается в 02:30
  4. PATH задан выше задачи

Как это выглядит