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

Эта задача — шаг 5 курса «Логи: разбор и обслуживание»

Сводка доставки писем по статусам

средне~7 мин

Почтовый релей пишет журнал /var/log/mail/delivery.log: время, id письма, получатель, иногда промежуточный узел, а последним словом — статус (sent, deferred, bounced). Строки разной длины. Посчитай, сколько писем в каждом статусе, и запиши в /root/delivery_summary.txt строки <статус> <количество> — по одной на статус.

Что потренируешь:
  • awk
  • $NF
  • sort
  • uniq -c
  • сводка по логу

Разбор темы

Когда строки лога разной длины, фиксированный номер колонки ломается: у одних строк статус пятый, у других седьмой. Зато он всегда последний, а в awk последнее поле — это $NF, где NF — число полей в текущей строке. Дальше привычная схема частотного анализа: выделить значение, отсортировать, чтобы одинаковые оказались рядом, и схлопнуть повторы со счётчиком. Формат вывода uniq -c — «число значение» с отступом, так что под требуемый «значение число» его переставляют ещё одним проходом.

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

  1. статус sent посчитан
  2. количества по статусам верные

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