Ответ
Имею опыт написания Bash-скриптов для автоматизации рутинных задач, настройки окружения, CI/CD пайплайнов и обработки данных.
Типичные сценарии использования:
- Автоматизация сборки и тестирования: Запуск юнит- и интеграционных тестов, сборка проекта.
- Развёртывание и конфигурация: Подготовка среды, копирование артефактов, управление сервисами.
- Мониторинг и логи: Проверка доступности сервисов, парсинг и анализ лог-файлов, отправка алертов.
- Обработка файлов: Пакетное переименование, конвертация, очистка временных данных.
Ключевые инструменты: grep, awk, sed, jq (для JSON), cron (для планировщика).
Пример скрипта для проверки здоровья (health-check) сервиса:
#!/bin/bash
# Strict mode для отлова ошибок
set -euo pipefail
SERVICE_URL="${1:-http://localhost:8080/health}"
TIMEOUT_SEC=5
MAX_RETRIES=3
for ((i=1; i<=MAX_RETRIES; i++)); do
echo "Попытка $i: Проверка $SERVICE_URL..."
# Используем timeout и curl для проверки HTTP-статуса
if HTTP_CODE=$(timeout $TIMEOUT_SEC curl -s -o /dev/null -w "%{http_code}" "$SERVICE_URL"); then
if [[ "$HTTP_CODE" -eq 200 ]]; then
echo "УСПЕХ: Сервис доступен (HTTP $HTTP_CODE)."
exit 0
else
echo "ПРЕДУПРЕЖДЕНИЕ: Сервис ответил с кодом $HTTP_CODE."
fi
else
echo "ОШИБКА: Не удалось подключиться к сервису."
fi
sleep 2
done
echo "СБОЙ: Сервис недоступен после $MAX_RETRIES попыток."
exit 1
Best practices: Всегда добавлять set -euo pipefail, проверять входные параметры, логировать действия и предусматривать обработку ошибок.