Работали ли вы с командной строкой (CLI)?

«Работали ли вы с командной строкой (CLI)?» — вопрос из категории DevOps и инфраструктура, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, командная строка — это мой основной инструмент для взаимодействия с серверами, управления инфраструктурой и автоматизации рутинных задач. Работаю преимущественно в bash на Linux-системах.

Типичные задачи, которые я решаю через CLI:

  1. Работа с файловой системой и текстом:

    # Поиск и анализ логов
    grep -r "ERROR" /var/log/app/ --include="*.log" | head -20
    
    # Мониторинг использования диска
    du -sh /data/* | sort -hr
    
    # Пакетная обработка файлов (например, перекодировка)
    find . -name "*.csv" -exec iconv -f WINDOWS-1251 -t UTF-8 {} -o {}.utf8 ;
  2. Управление процессами и системами:

    # Проверка потребления ресурсов
    top -u appuser
    
    # Управление службами
    sudo systemctl status nginx
    sudo journalctl -u my_service --since "1 hour ago"
  3. Сетевые операции:

    # Проверка доступности и задержек
    curl -I https://api.example.com
    ping -c 4 8.8.8.8
    
    # Диагностика сетевых проблем
    netstat -tulpn | grep :80
    traceroute google.com
  4. Автоматизация через скрипты: Пишу bash-скрипты для деплоя, резервного копирования, очистки временных файлов. Например, скрипт для деплоя приложения:

    #!/bin/bash
    set -e  # Выход при ошибке
    
    echo "Pulling latest code..."
    git pull origin main
    
    echo "Building Docker image..."
    docker build -t myapp:latest .
    
    echo "Restarting service..."
    docker-compose down && docker-compose up -d
    
    echo "Deployment completed."

Для более сложной автоматизации использую Ansible (также через CLI), где написание плейбуков позволяет управлять конфигурацией десятков серверов.