← Назад к вопросам

Что такое команда top?

1.3 Junior🔥 291 комментариев
#Linux и администрирование#Мониторинг и логирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Команда top в Linux/Unix

Команда top — это одна из наиболее мощных и часто используемых утилит для мониторинга системы в реальном времени в Linux и других Unix+подобных операционных системах. Она предоставляет динамически обновляемую сводку о работе системы, включая информацию о процессах, использовании ресурсов (CPU, памяти, swap) и нагрузке на систему.

Ключевые возможности и отображаемая информация

При запуске top выводится интерактивный интерфейс, который обычно состоит из двух основных частей:

  1. Сводка по системе (System Summary) — находится в верхней части экрана.
  2. Список процессов (Process List) — занимает основную область, отображая процессы в порядке убывания потребления CPU по умолчанию.

Давайте рассмотрим подробнее, что показывает каждая секция.

1. Верхняя сводка (Header)

Первые несколько строк содержат общую информацию о системе:

  • Время работы (uptime) и средняя нагрузка (load average):
    00:35:07 up 12 days,  3:15,  1 user,  load average:的道 0.15, 0.05, 0.01
    
    Показывает, как долго система работает, количество пользователей и **load average** за 1, 5 и 15 минут. Load average — это среднее количество процессов, готовых к выполнению (в состоянии "R" или Running) или ожидающих дискового I/O (в состоянии "D" или Uninterruptible Sleep).

  • Статистика задач (Tasks):
    Tasks: 265 total,   1 running, 264 sleeping,   0 stopped,   0 zombie
    
    Общее количество процессов и их распределение по состояниям: running, sleeping, stopped, zombie.

  • Использование CPU (%Cpu(s)):
    %Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    
    Детализированная разбивка использования процессора:
    *   **us** (user) — время, потраченное на процессы пользовательского уровня.
    *   **sy** (system) — время, потраченное на процессы уровня ядра.
    *   **id** (idle) — время простоя процессора.
    *   **wa** (iowait) — время ожидания завершения операций ввода+вывода. Высокое значение часто указывает на проблемы с диском.
    *   **st** (steal) — виртуальный CPU "забирается" гипервизором у виртуальной машины (важно в облачных средах).

  • Использование памяти (MiB Mem / Swap):
    MiB Mem :   7856.8 total,   1024.2 free,   4096.0 used,   2736.6 buff/cache
    MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.
    
    Показывает общий объем оперативной (`Mem`) и swap-памяти, а также детали: свободно, использовано, занято под буферы и кеш (`buff/cache`). Важно понимать, что память, занятая под кеш, может быть быстро освобождена ядром при необходимости.

2. Список процессов

Основная таблица, по умолчанию сортируемая по потреблению CPU. Каждая колонка содержит важные метрики:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1234 appuser   20   0  2.3g   1.2g   150m S  45.5  15.6  10:05.32 java
  • PID — идентификатор процесса.
  • USER — владелец процесса.
  • PR и NI — приоритет (priority) и значение "nice" процесса, влияющие на планировщик задач ядра.
  • VIRT, RES, SHR — виды используемой памяти:
    *   `VIRT` — вся виртуальная память процесса (включая своп, библиотеки и т.д.).
    *   `RES` (`Resident Set Size`) — физическая RAM, фактически используемая процессом в данный момент — ключевой показатель.
    *   `SHR` — общая (`Shared`) память, которую процесс разделяет с другими (например, библиотеки).
  • S — состояние процесса (Status): R (Running), S (Sleeping), D (Uninterruptible Sleep), Z (Zombie) и др.
  • %CPU, %MEM — процент использования процессора и оперативной памяти.
  • TIME+ — общее процессорное время, затраченное на выполнение процесса.
  • COMMAND — имя команды или путь к исполняемому файлу.

Основные интерактивные команды управления

Одна из главных сил top — интерактивный режим. Вот некоторые из самых полезных команд, которые можно вводить после запуска:

  • P (по умолчанию) — сортировка по использованию %CPU.
  • M — сортировка по использованию памяти (%MEM / RES).
  • T — сортировка по времени выполнения (TIME+).
  • k"kill" — послать сигнал процессу. Нужно будет ввести PID и номер сигнала (по умолчанию 15 = SIGTERM, для жесткого завершения — 9 = SIGKILL).
  • r — изменить значение "nice" (renice) процесса, влияя на его приоритет планирования.
  • u — фильтрация процессов по имени пользователя.
  • 1 (цифра) — переключение между отображением суммарной статистики CPU и показом нагрузки на каждое ядро/поток отдельно (очень полезно на многопроцессорных системах).
  • h или ? — помощь по всем доступным командам.
  • q — выход из top.

Использование в DevOps и администрировании

Для инженеров DevOps и системных администраторов top является инструментом первой необходимости:

  • Диагностика проблем производительности: Быстро определить процесс, потребляющий 100% CPU или чрезмерное количество памяти (%MEM).
  • Анализ нагрузки: Понимание структуры нагрузки (us vs sy, wa) помогает локализовать проблему: в пользовательском коде, системных вызовах или дисковой подсистеме.
  • Мониторинг в реальном времени: Позволяет наблюдать за эффектом от развертывания нового приложения или изменения конфигурации сразу после его внедрения.
  • Управление процессами: Возможность быстро завершить (k) или изменить приоритет (r) проблемного процесса без поиска его PID другими способами.

Пример базового использования

# Запуск top с сортировкой по памяти с самого начала
top -o %MEM

# Запуск top в batch-режиме (неинтерактивном) для логирования или передачи данным другим утилитам
top -b -n 1 > system_snapshot.txt

# Запуск с обновлением раз в 5 секунд и показом только процессов конкретного пользователя
top -u appuser -d 5

Альтернативы и современные инструменты

Хотя top чрезвычайно мощна, существуют и более современные или узкоспециализированные инструменты:

  • htop — улучшенная, более наглядная версия top с вертикальным и горизонтальным разделением, поддержкой мыши и цветным выводом.
  • glances — кроссплатформенный мониторинговый инструмент с веб-интерфейсом.
  • btop / bpytop — очень наглядные, с богатой графикой.
  • nmon — мощный инструмент для мониторинга производительности и анализа трендов.
  • Системные мониторы на основе Prometheus, Grafana, Datadog и т.п. — для распределенного, исторического мониторинга и алертинга в продакшн-средах.

Тем не менее, top остается незаменимым "швейцарским ножом" для быстрой, локальной диагностики, установленным по умолчанию практически на всех серверах. Глубокое понимание ее вывода — обязательный навык для любого инженера, работающего с Linux+системами.