Что такое команда top в Linux и как её используют в DevOps?

«Что такое команда top в Linux и как её используют в DevOps?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

top — это интерактивная консольная утилита для мониторинга системных ресурсов в реальном времени. В DevOps она является инструментом первого реагирования для диагностики проблем с производительностью на серверах, виртуальных машинах или внутри контейнеров.

Базовое использование и ключевые метрики:

Запуск: top

В выводе критически важны:

  1. load average: Средняя нагрузка за 1, 5 и 15 минут. Значение, превышающее количество CPU ядер, указывает на очередь процессов.
  2. %Cpu(s): Распределение времени CPU: us (user), sy (system), id (idle). Высокий sy может указывать на проблемы с I/O или системными вызовами.
  3. KiB Mem / Swap: Использование оперативной памяти и свопа. Нехватка памяти (free близко к 0) ведёт к своппингу и резкому падению производительности.

Практическое применение в DevOps:

  • Быстрая диагностика «подвисшего» сервера:

    # Подключиться к серверу и сразу посмотреть top
    ssh prod-web-01
    top
    # Сортировка по CPU (Shift+P) или памяти (Shift+M) сразу покажет проблемный процесс.
  • Мониторинг внутри контейнера Docker:

    # Зайти в работающий контейнер и запустить top
    docker exec -it my-app-container /bin/bash
    top
    # Или сразу выполнить команду
    docker exec my-app-container top -bn1 | head -20
  • Автоматизация и сбор метрик: Нережимный (-b) и однократный (-n1) запуск используется в скриптах.

    # Скрипт для сбора снимка состояния и отправки в лог
    TIMESTAMP=$(date +%s)
    TOP_SNAPSHOT=$(top -bn1 -o %CPU)
    echo "[$TIMESTAMP] Top snapshot:n$TOP_SNAPSHOT" >> /var/log/system_health.log
    
    # Поиск процессов, потребляющих больше 30% CPU
    top -bn1 | awk 'NR>7 && $9 > 30 {print $12, $9"%"}'
  • Альтернативы для продвинутого анализа:

    • htop — улучшенная, интуитивная версия top.
    • atop — ведёт историю, полезно для пост-анализа инцидентов.
    • glances — показывает ещё больше информации (сети, диски) в одном окне.

Для постоянного мониторинга в DevOps используются специализированные системы (Prometheus, Grafana, Datadog), но top остаётся незаменимым инструментом для немедленного «ручного» обследования.