Полное руководство по top в Linux: мониторинг процессов и оперативный триаж

Быстрые ссылки
- Информативная панель
- Как проверить версию top
- Стандартный вид
- Прокрутка вывода
- Сменить единицы измерения памяти
- Настройка сводки
- Цвет и подсветка
- Сортировка по столбцам
- Полная командная строка процесса
- Процессы конкретного пользователя
- Показать только активные задачи
- Установить количество отображаемых процессов
- Изменить nice (renice)
- Убить процесс с помощью top
- Кастомизация вывода
- Альтернативный режим отображения
- Другие клавиши
- Есть ли альтернативы top?
Что такое top в одном предложении
top — интерактивный инструмент, который отображает текущие системные метрики и список запущенных процессов в реальном времени.
Важно: большинство упомянутых клавиш действуют только в интерактивной сессии top и зависят от версии и терминала.
Информативная панель
Команда top существует с 1984 года и имеет несколько реализаций. В этом руководстве использованы тесты на Ubuntu 18.04 и проверка на других дистрибутивах. По умолчанию top заполняет окно терминала максимально возможным объёмом информации. Это полезно для администрирования: видна текущая нагрузка, использование памяти и список процессов — всё, что нужно для первичного анализа.
Панель называется сводкой (dashboard). Она показывает текущее время, время работы системы, число подключённых пользователей и среднюю загрузку (load average) за 1, 5 и 15 минут. Также отображается число задач и их состояния: запущенные, остановленные, спящие и зомби.
Важное определение: load average — усреднённая очередь выполнения задач, индикатор того, насколько система загружена по времени CPU и ожидающим операциям ввода-вывода.
Код примера для проверки версии:
top -vЕсли ваша версия сильно устарела, некоторые возможности могут отсутствовать.
Стандартный вид
Запуск:
topПо умолчанию top обновляет вывод каждые 3 секунды. В выводе можно выделить две области: сводка (вверху) и список задач (task area).

Пояснение ключевых полей сводки и списка процессов — переведено и упрощено:
- us — время CPU, потраченное на процессы в пространстве пользователя.
- sy — время CPU, потраченное в пространстве ядра.
- ni — время CPU для процессов с изменённым nice.
- id — время простоя CPU.
- wa — ожидание ввода-вывода (I/O wait).
- hi — время обслуживания аппаратных прерываний.
- si — время обслуживания программных прерываний.
- st — «steal time», потерянное время из-за гипервизора в виртуализированных средах.
Память и своп отображаются в киБайтах (kibibytes) по умолчанию: общая, свободная, используемая и кэшированная.
Колонки в списке процессов:
- PID — идентификатор процесса.
- USER — владелец процесса.
- PR — приоритет процесса.
- NI — значение nice.
- VIRT — виртуальная память процесса.
- RES — резидентная (физическая) память процесса.
- SHR — объём разделяемой памяти.
- S — статус (D, R, S, T, Z).
- %CPU — доля CPU за интервал между обновлениями.
- %MEM — доля физической памяти.
- TIME+ — суммарное время CPU в сотых секунды.
- COMMAND — имя команды или полноценная командная строка.
Состояния процессов:
- D — не прерываемый сон (обычно I/O).
- R — выполняется.
- S — спит.
- T — остановлен/отслежен.
- Z — зомби.
Нажмите Q, чтобы выйти из top.
Прокрутка вывода
Используйте стрелки вверх/вниз, Home/End, PageUp/PageDown для перемещения по списку процессов. Стрелки влево/вправо сдвигают отображение по колонкам — удобно, если командная строка выходит за пределы окна терминала.

Поменять единицы измерения памяти
- Нажмите Shift+E (большая E), чтобы переключить единицы в строках сводки: KiB, MiB, GiB, TiB, PiB, EiB.
- Нажмите e (маленькая e), чтобы переключить единицы в списке процессов (VIRT, RES, SHR).
В примере мы установили GiB для сводки и MiB для списка процессов.

Настройка сводки
- Нажмите l, чтобы скрыть или показать строку load (первую строку).

- Нажмите 1, чтобы развернуть сводку по каждому CPU отдельно (полезно на многопроцессорных системах).

- Нажмите t, чтобы переключить отображение CPU на простые ASCII-графики.

При каждом CPU выводятся три числа и график: суммарный процент user+nice, процент kernel (sy) и итоговое округлённое значение.
Нажимайте t несколько раз, чтобы переключать режимы: линии, блочные символы, или скрыть сводку.

- Нажмите m, чтобы переключать режимы отображения памяти и свопа (линии, графики, блоки или скрыть).

Вы можете комбинировать t и m, чтобы получить нужную визуализацию CPU и памяти.

Цвет и подсветка
- Нажмите z, чтобы включить цветную раскраску (если ваш терминал поддерживает цвет).

- Нажмите y, чтобы выделять запущенные задачи.
- Нажмите x, чтобы подсвечивать колонку сортировки.
- Нажмите b, чтобы переключать режимы подсветки между полужирным и инвертированным текстом.

Сортировка по столбцам
По умолчанию сортировка по %-CPU. Изменить можно так:
- P — сортировка по %CPU.
- M — сортировка по %MEM.
- N — сортировка по PID.
- T — сортировка по TIME+.

Нажатие клавиши сортирует и обновляет порядок списка сразу.
Полная командная строка процесса
Нажмите c, чтобы переключать колонку COMMAND между коротким именем процесса и полной командной строкой (включая аргументы).

Нажмите V, чтобы отобразить дерево процессов, показывающее, какие процессы породили другие.
Просмотр процессов одного пользователя
Нажмите u, чтобы отфильтровать процессы по пользователю. Введите имя пользователя или UID при запросе.

В примере мы ввели “dave” — теперь видны только процессы этого пользователя.

Показать только активные задачи
Нажмите Shift+L (L) или используйте ключи для фильтрации статусов. Для подсвечивания только активно использующих CPU процессов используется y.
Установить количество отображаемых процессов
Нажмите n, затем введите число, чтобы задать количество строк процесса в списке. Это полезно на маленьких экранах.
Изменить nice (renice) процесса
Выберите процесс стрелками, затем нажмите r и введите новое значение nice (диапазон обычно от -20 до 19, чем меньше — тем выше приоритет).
Внимание: уменьшать nice (поднимать приоритет) требует прав root.
Убить процесс с помощью top
Выберите процесс и нажмите k, затем введите сигнал (по умолчанию SIGTERM 15). Для мгновенного завершения используйте 9 (SIGKILL), но сначала пробуйте мягкие сигналы.
Важно: убивать системные процессы может привести к потере данных или нестабильности.
Кастомизация вывода
Нажмите f, чтобы открыть меню полей и скрыть/показать колонки. Можно также менять порядок колонок клавишей o.
Другие полезные опции:
- s — сменить интервал обновления (секунды).
- W — сохранить конфигурацию в ~/.toprc.
Альтернативные режимы и инструменты
top хорош для быстрого осмотра, но бывают ситуации, когда нужны другие инструменты:
- htop — более удобный, с мышевой поддержкой и цветами.
- atop — более длинная история по ресурсам, подойдёт для аудита и долгосрочного анализа.
- ps — моментальные снимки с гибкими фильтрами.
- pidstat, iostat, vmstat — для детального анализа CPU, I/O и памяти.
Если требуется GUI, рассмотрите glances или инструменты мониторинга Prometheus+Grafana для долгой ретроспективы.
Быстрая шпаргалка по клавишам top
- q — выйти
- h — справка
- ? — справка (альтернативно)
- k — послать сигнал процессу (kill)
- r — renice
- u — фильтр по пользователю
- c — переключить COMMAND
- V — дерево процессов
- 1 — сводка по CPU
- t — переключить отображение CPU
- m — переключить отображение памяти
- e/E — смена единиц памяти
- z — цвет
- y — выделять запущенные
- x — выделять колонку сортировки
- b — менять стиль подсветки
- P/M/N/T — быстрая сортировка по столбцам
Мини-методология: как быстро триажить высокую загрузку CPU с top
- Откройте top.
- Нажмите P, чтобы убедиться, что сортировка по %CPU.
- Смотрите на верхнюю сводку: высокий us указывает на пользовательские процессы; высокий sy — на работу ядра; высокий wa — на I/O-ожидание.
- Выделите процесс с наибольшим %CPU. Нажмите c, чтобы увидеть полную командную строку.
- Если это полезная системная служба — проверьте логи; если это пользовательская нагрузка — поговорите с владельцем или временно понизьте приоритет (r) или завершите процесс (k).
- Если загрузка связана с I/O (wa), используйте iostat или iotop.
Playbook при высокой памяти или утечке памяти
- В top нажмите M, чтобы отсортировать по %MEM.
- Посмотрите VIRT и RES для подозрительных процессов.
- Нажмите c, чтобы увидеть аргументы запуска (иногда там видна опция, создающая проблему).
- Попробуйте рестартовать службу через systemd вместо kill — systemctl restart <служба>.
- Если процесс продолжает расти, снимите дамп памяти для анализа (gcore) и проанализируйте с инструментами разработчика.
- При необходимости включите swap или перезапустите хост по согласованию с командой.
Контрольный список для ролей
Для системного администратора:
- Проверить %CPU, %MEM, I/O wait.
- Установить причины (процесс или система).
- Применить рестарт/renice/kill по процедуре.
- Документировать инцидент.
Для разработчика приложения:
- Снять стек/дамп при росте памяти.
- Повторить нагрузочный тест.
- Профилировать приложение.
Для оператора DevOps:
- Сравнить с метриками мониторинга.
- При необходимости масштабировать сервисы.
Решающее дерево для первичной диагностики (Mermaid)
flowchart TD
A[Высокая загрузка] --> B{Высокая %CPU или %MEM?}
B -->|%CPU| C[Сортировка по CPU P]
B -->|%MEM| D[Сортировка по MEM M]
C --> E{Процесс user/kernel/IO?}
E -->|user| F[Посмотреть команду c, связаться с владельцем]
E -->|kernel| G[Проверить драйверы/модули]
E -->|I/O| H[Использовать iotop/iostat]
D --> I{Рост VIRT или RES?}
I -->|VIRT| J[Посмотреть утечки аллокаций]
I -->|RES| K[Перезапустить службу или снять дамп]Когда top не подходит (примеры)
- Необходима долгосрочная ретроспектива — топ показывает только текущие данные.
- Нужны метрики с агрегацией и оповещениями — используйте Prometheus/Grafana.
- Требуется детальный анализ I/O на уровне потоков — используйте iostat, blktrace или perf.
Короткий словарь терминов
- load average — средняя загрузка за 1/5/15 минут.
- nice — приоритет процесса (влияет на планирование CPU).
- VIRT/RES — виртуальная и резидентная память процесса.
- wa — время ожидания ввода-вывода.
Критерии приёмки
- Вы умеете запускать top и выходить (q).
- Можете отфильтровать процессы по пользователю (u) и показать полную командную строку (c).
- Можете сортировать по CPU и памяти (P, M) и отправлять сигналы (k).
- Можете повысить приоритет/понизить (r) и сохранить конфигурацию (W).
Шпаргалка: пример быстрой диагностики за 5 минут
- top — посмотреть сводку.
- P, M — найти процессы-лидеры.
- c — узнать командную строку.
- r/k — если нужно, снизить приоритет или завершить.
- s — увеличить частоту обновления до 1–2 с при необходимости.
- W — сохранить полезные настройки в .toprc.
Безопасность и привилегии
Некоторые операции требуют прав root: renice с отрицательным значением, завершение системных процессов. Действуйте по процедурам и согласуйте критичные действия.
Короткое резюме
top — быстрый и универсальный инструмент для первичной диагностики состояния Linux. Он помогает видеть в реальном времени загрузку CPU, использование памяти и список процессов. Для длительного мониторинга и оповещений используют специализированные системы, но top остаётся незаменимым для оперативного триажа.
Важно: перед изменениями в продакшн-среде оцените риск и уведомьте команду.