Работали ли вы с Bash?

«Работали ли вы с Bash?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, активно использую Bash для автоматизации рутинных операций, написания скриптов развертывания и обработки логов в инфраструктурных задачах.

Типичные сценарии использования:

  • Автоматизация бэкапов и очистки временных файлов.
  • Написание wrapper-скриптов для CI/CD пайплайнов (например, подготовка окружения, запуск тестов).
  • Парсинг и агрегация логов с помощью grep, awk, sed.
  • Управление контейнерами и виртуальными машинами через CLI.

Пример скрипта для ротации логов Nginx:

#!/bin/bash
LOG_DIR="/var/log/nginx"
BACKUP_DIR="/backups/nginx_logs"
DATE=$(date +%Y%m%d)

# Создаем директорию для бэкапа, если её нет
mkdir -p "$BACKUP_DIR"

# Архивируем access.log и error.log
tar -czf "$BACKUP_DIR/nginx_logs_$DATE.tar.gz" -C "$LOG_DIR" access.log error.log

# Очищаем исходные логи (с перезапуском Nginx для корректной работы)
> "$LOG_DIR/access.log"
> "$LOG_DIR/error.log"
systemctl reload nginx

echo "Логи заархивированы в $BACKUP_DIR/nginx_logs_$DATE.tar.gz"

Для сложной логики или кроссплатформенных задач часто перехожу на Python, но Bash незаменим для быстрых, легковесных скриптов, напрямую взаимодействующих с системой.