linux processes

top

Мониторинг процессов в реальном времени — динамический интерактивный просмотр системы

Описание

top — интерактивный монитор системы и процессов, обновляющий информацию в реальном времени. В отличие от ps, top непрерывно обновляет экран (по умолчанию каждые 3 секунды), позволяя наблюдать за изменением нагрузки, обнаруживать «тяжёлые» процессы и реагировать на них, не выходя из программы.

Экран top делится на две части: сводка системы (uptime, количество задач, нагрузка CPU, использование памяти и swap) и таблица процессов, отсортированная по выбранному критерию. По умолчанию сортировка по %CPU. Пока top запущен, можно нажимать клавиши для изменения сортировки, фильтрации, завершения процессов.

Используйте top для оперативной диагностики: «что грузит сервер прямо сейчас», «почему вырос swap», «какой процесс потребляет всю память». Для более удобного интерфейса рассмотрите htop (если установлен) — он добавляет цветовое выделение, мышь и вертикальную прокрутку.

Синтаксис

top [options]

После запуска top переходит в интерактивный режим. Основные интерактивные клавиши:

q — выход h / ? — справка по клавишам k — завершить процесс (ввести PID, затем сигнал) r — изменить приоритет (renice) P — сортировать по %CPU (по умолчанию) M — сортировать по %MEM N — сортировать по PID T — сортировать по TIME+ 1 — показать каждое ядро CPU отдельно c — переключить: краткое имя / полная командная строка u — фильтровать по пользователю f — редактор полей (добавить/убрать колонки) W — сохранить конфигурацию в ~/.toprc

Флаги и опции

ФлагОписание
-d NИнтервал обновления в секундах (по умолчанию 3). Пример: top -d 1
-n NЧисло итераций обновления, затем выход. Используется в скриптах
-bBatch-режим: вывод в stdout без интерактивности (для логов/скриптов)
-p pidМониторить только указанные PID (до 20, через запятую)
-u userПоказывать только процессы указанного пользователя
-U userКак -u, но включает процессы, где user является реальным/сохранённым UID
-iИгнорировать idle/zombie процессы (показывать только активные)
-HПоказывать отдельные потоки (threads) вместо процессов
-cПоказывать полную командную строку вместо краткого имени
-o fieldСортировать по указанному полю при запуске (напр. -o %MEM)
-w NОграничить ширину вывода N символами

Поля сводки CPU:

ПолеЗначение
usUser space — время в пользовательских процессах
sySystem — время в ядре (системные вызовы)
niNice — время в процессах с изменённым приоритетом
idIdle — процент простоя (100% - нагрузка)
waWait I/O — время ожидания операций ввода-вывода
hiHardware Interrupts — аппаратные прерывания
siSoftware Interrupts — программные прерывания
stSteal — время, украденное гипервизором (в виртуальных машинах)

Паттерны использования

Снять снимок нагрузки в скрипте

# Одна итерация, batch-режим, топ-10
top -b -n 1 | head -20

# Сохранить в файл
top -b -n 1 > /tmp/top_snapshot.txt

# Топ-5 процессов по CPU
top -b -n 1 | grep -A 12 'PID' | tail -10

Мониторинг конкретных процессов

# Следить за двумя PID
top -p 1234,5678

# Найти PID и запустить мониторинг
top -p $(pgrep nginx | head -3 | tr '\n' ',')

# Мониторинг по пользователю
top -u www-data

Мониторинг потоков приложения

# Запустить в режиме потоков
top -H

# Потоки конкретного процесса
top -H -p 1234

# В интерактивном режиме
# нажать H для переключения threads

Мониторинг с обновлением раз в секунду

# Обновление каждую секунду
top -d 1

# Batch-режим: 60 снимков раз в секунду
top -b -d 1 -n 60 > /var/log/top_1min.txt

# Мониторинг памяти: сортировка по %MEM
top -o %MEM

Завершить процесс прямо из top

# 1. Запустить top
top

# 2. Нажать k (kill)
# 3. Ввести PID
# 4. Нажать Enter (сигнал 15 = SIGTERM)
# 5. Для принудительного: ввести 9 (SIGKILL)

# Или переключить сортировку по MEM: M
# Найти процесс визуально, нажать k

Диагностика высокого wa (I/O wait)

# Запустить top, нажать 1 (все ядра)
top

# Если wa > 20-30% — проблема с I/O
# Определить виновника:
iotop         # если установлен
# или
ps -eo pid,stat,comm | grep D
# D = uninterruptible sleep (ждёт I/O)

Советы и предупреждения

Совет: сохранить настройки top
Настройте отображаемые колонки (клавиша f), порядок сортировки и интервал обновления, затем нажмите W — настройки сохранятся в ~/.toprc и будут применяться при каждом запуске.
Совет: htop как удобная альтернатива
Если доступен htop (установить: sudo apt install htop), предпочтите его: цветовое выделение, поддержка мыши, вертикальная прокрутка, встроенный tree-view и более понятный интерфейс убийства процессов без ввода PID вручную.
Внимание: %CPU может превышать 100%
На многоядерных системах %CPU в top показывает нагрузку относительно одного ядра. Процесс, использующий 4 ядра полностью, покажет 400%. Нажмите I (Irix mode) для переключения на нормализованный режим (0–100% от суммарной мощности).
Внимание: top сам потребляет ресурсы
При слишком малом интервале обновления (-d 0.1) сам top начинает заметно нагружать CPU. Для серьёзного мониторинга используйте специализированные инструменты: vmstat, sar, Prometheus или Grafana.