Приведи пример сложной задачи, которую решал написанием скрипта на Linux

«Приведи пример сложной задачи, которую решал написанием скрипта на Linux» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Однажды потребовалось автоматизировать обработку логов Nginx: анализировать топ-10 IP-адресов по количеству запросов, фильтровать ботов по User-Agent и отправлять отчет в Telegram.

Решение на bash + awk:

#!/bin/bash

LOG_FILE="/var/log/nginx/access.log"
TEMP_FILE="/tmp/nginx_analysis.tmp"

# Топ IP
awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr | head -10 > $TEMP_FILE

# Фильтр ботов (пример)
grep -ivE "bot|crawler|spider" $LOG_FILE >> $TEMP_FILE

# Отправка в Telegram
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" 
    -d chat_id="$CHAT_ID" 
    -d text="$(cat $TEMP_FILE)"

Ключевые сложности:

  • Обработка больших логов без зависаний
  • Корректная фильтрация ботов (ложные срабатывания)
  • Оптимизация вызовов awk/sort для скорости

Дополнительно добавил logrotate и крон для ежедневного выполнения.