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

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

Системный cron: проверка сайта каждые 2 минуты

средне~15 мин

Напиши исполняемый скрипт /usr/local/bin/site-up: он получает URL первым аргументом и, если URL ответил HTTP 200, печатает UP и выходит с кодом 0, иначе печатает DOWN и выходит с кодом 1. Затем оформи системную cron-задачу файлом /etc/cron.d/site-up: от пользователя root каждые 2 минуты проверять http://localhost:8070/ping, дописывая вывод в /var/log/site-up.log. Демон cron в песочнице не запущен — запусти его сам.

Что потренируешь:
  • cron.d
  • системный crontab
  • curl http_code
  • код выхода
  • */N

Разбор темы

Кроме личных crontab пользователей у cron есть системные файлы — /etc/crontab и каталог /etc/cron.d/, куда пакеты и админы кладут свои задачи отдельными файлами. Формат там на одно поле длиннее: между расписанием и командой указывают, от какого пользователя запускать. Имена файлов в cron.d cron фильтрует: файлы с точкой в имени (например, .sh или .bak) он пропускает. Сам скрипт проверки сообщает результат двумя способами — строкой для лога и кодом выхода для автоматики; HTTP-статус достаётся из curl -w '%{http_code}'.

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

  1. скрипт site-up исполняемый
  2. живой URL: UP и код 0
  3. ответ 404: DOWN и код 1
  4. лежащий сервис: DOWN и код 1
  5. в /etc/cron.d/site-up — проверка каждые 2 минуты от root
  6. демон cron запущен

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