top
Мониторинг процессов в реальном времени — динамический интерактивный просмотр системы
Описание
top — интерактивный монитор системы и процессов, обновляющий информацию в реальном времени. В отличие от ps, top непрерывно обновляет экран (по умолчанию каждые 3 секунды), позволяя наблюдать за изменением нагрузки, обнаруживать «тяжёлые» процессы и реагировать на них, не выходя из программы.
Экран top делится на две части: сводка системы (uptime, количество задач, нагрузка CPU, использование памяти и swap) и таблица процессов, отсортированная по выбранному критерию. По умолчанию сортировка по %CPU. Пока top запущен, можно нажимать клавиши для изменения сортировки, фильтрации, завершения процессов.
Используйте top для оперативной диагностики: «что грузит сервер прямо сейчас», «почему вырос swap», «какой процесс потребляет всю память». Для более удобного интерфейса рассмотрите htop (если установлен) — он добавляет цветовое выделение, мышь и вертикальную прокрутку.
Синтаксис
После запуска top переходит в интерактивный режим. Основные интерактивные клавиши:
Флаги и опции
| Флаг | Описание |
|---|---|
-d N | Интервал обновления в секундах (по умолчанию 3). Пример: top -d 1 |
-n N | Число итераций обновления, затем выход. Используется в скриптах |
-b | Batch-режим: вывод в 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:
| Поле | Значение |
|---|---|
us | User space — время в пользовательских процессах |
sy | System — время в ядре (системные вызовы) |
ni | Nice — время в процессах с изменённым приоритетом |
id | Idle — процент простоя (100% - нагрузка) |
wa | Wait I/O — время ожидания операций ввода-вывода |
hi | Hardware Interrupts — аппаратные прерывания |
si | Software Interrupts — программные прерывания |
st | Steal — время, украденное гипервизором (в виртуальных машинах) |
Паттерны использования
Снять снимок нагрузки в скрипте
# Одна итерация, 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)
Советы и предупреждения
Настройте отображаемые колонки (клавиша
f), порядок сортировки и интервал обновления, затем нажмите W — настройки сохранятся в ~/.toprc и будут применяться при каждом запуске.
Если доступен
htop (установить: sudo apt install htop), предпочтите его: цветовое выделение, поддержка мыши, вертикальная прокрутка, встроенный tree-view и более понятный интерфейс убийства процессов без ввода PID вручную.
На многоядерных системах
%CPU в top показывает нагрузку относительно одного ядра. Процесс, использующий 4 ядра полностью, покажет 400%. Нажмите I (Irix mode) для переключения на нормализованный режим (0–100% от суммарной мощности).
При слишком малом интервале обновления (
-d 0.1) сам top начинает заметно нагружать CPU. Для серьёзного мониторинга используйте специализированные инструменты: vmstat, sar, Prometheus или Grafana.