Расскажи про свой опыт работы с Linux

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

Ответ

Я активно работаю с Linux-серверами (в основном Ubuntu и Amazon Linux) как средами для развертывания и эксплуатации data-пайплайнов и приложений.

Основные направления работы:

  1. Администрирование и мониторинг:

    • Установка, настройка и обновление ПО (Java, Python, Docker, агенты мониторинга).
    • Мониторинг ресурсов: использовал htop, iostat, netstat для диагностики. Настраивал алерты в CloudWatch и Prometheus на высокую загрузку CPU, память или дисковое пространство.
    • Работа с журналами: journalctl для systemd-сервисов, tail -f, grep и awk для анализа логов приложений, настройка ротации логов через logrotate.
  2. Автоматизация и скрипты: Писал bash-скрипты для рутинных операций: деплой, резервное копирование, очистка временных файлов.

    #!/bin/bash
    # Скрипт для очистки старых логов Spark с EC2-инстансов
    LOG_DIR="/var/log/spark/apps"
    RETENTION_DAYS=14
    find "$LOG_DIR" -name "*.log" -type f -mtime +$RETENTION_DAYS -delete
    echo "$(date): Очистка логов старше $RETENTION_DAYS дней выполнена" >> /var/log/cleanup.log
    • Настраивал cron-задачи для запуска ETL-скриптов и периодических проверок.
  3. Сетевая настройка и безопасность:

    • Настройка SSH-доступа с ключами, использование ssh-agent.
    • Конфигурация firewall (ufw или security groups в AWS).
    • Управление правами файлов и пользователей (chmod, chown, sudo).
  4. Работа в облаке (AWS EC2):

    • Запуск и управление инстансами через AWS CLI.
    • Подключение EBS-томов, работа с сетевыми файловыми системами (EFS).
    • Сбор метрик с инстансов через CloudWatch Agent.
  5. Контейнеризация: Использовал Docker для изоляции окружений приложений (например, для Airflow или JupyterHub). Писал Dockerfile, управлял контейнерами через docker-compose в dev-среде.

Этот опыт позволяет мне самостоятельно развертывать и поддерживать инфраструктуру для data-сервисов, быстро диагностировать проблемы на сервере и эффективно взаимодействовать с DevOps-инженерами.