Как читать вывод, что означают цифры и где искать причину проблемы
top — это интерактивный монитор процессов и ресурсов системы. Он отвечает на три вопроса, которые задают себе администраторы при любом инциденте:
Команда есть почти везде: в любом дистрибутиве Linux она установлена по умолчанию. Поэтому её знание — базовый навык, который спрашивают на собеседованиях и который спасает, когда нет графического интерфейса и доступен только SSH.
top # интерактивный режим
htop # улучшенная версия (если установлена)
top -bn1 | head -n 20 # один снимок, удобно для скриптов и логов
После запуска экран делится на две части: сверху заголовок с общими показателями, снизу таблица процессов, отсортированная по загрузке CPU.
Первая строка — время, аптайм, количество пользователей и load average. Далее идут строки Tasks, %Cpu, Mem и Swap. Рассмотрим их по порядку.
| Строка | Что показывает |
|---|---|
top - 14:02:11 up 12 days, 3 users | Текущее время, сколько система работает без перезагрузки, число вошедших пользователей |
load average: 0.42, 0.37, 0.31 | Средняя очередь задач за 1, 5 и 15 минут |
Tasks: ... | Количество процессов и их состояния |
%Cpu(s): ... | Распределение времени процессора по категориям |
MiB Mem / MiB Swap | Состояние оперативной памяти и файла подкачки |
Load average — число, которое часто путают с процентом загрузки. На самом деле это средняя длина очереди задач, которые либо выполняются, либо ждут выполнения. Значений три: за последнюю минуту, за пять и за пятнадцать минут.
nproc # сколько ядер у системы
cat /proc/loadavg # тот же load average в сыром виде
wa: скорее всего, система ждёт диск или сеть.Строка показывает, сколько процессов в каждом состоянии. Главные:
| Состояние | Значение | Что делать, если много |
|---|---|---|
| running | Выполняется на процессоре или готов выполняться | Норма для нагруженной системы, проверяйте %Cpu |
| sleeping | Ждёт события: сеть, таймер, ввод пользователя | Норма, большинство процессов в этом состоянии |
| stopped | Остановлен сигналом (например, Ctrl+Z) | Вернуть через fg или завершить |
| zombie | Завершился, но родитель не забрал код возврата | Исправить родительский процесс или перезапустить его |
В выводе также встречается состояние D (uninterruptible sleep) — процесс ждёт диск и не может быть прерван даже сигналом SIGKILL. Большое число D — признак проблем с дисковой подсистемой или зависшей NFS-монтировкой.
Это главная строка для понимания нагрузки процессора. Пример: %Cpu(s): 3.1 us, 1.2 sy, 0.0 ni, 95.4 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st. Все значения — проценты времени процессора за последний интервал, в сумме дают 100%.
| Поле | Расшифровка | Когда важно |
|---|---|---|
| us (user) | Время в пользовательском коде приложений | Высокий us — приложение много считает: ищите процесс в таблице |
| sy (system) | Время в ядре: системные вызовы, сеть, файловая система | Высокий sy при большом числе соединений или I/O — повод смотреть на сеть и диск |
| ni (nice) | Время процессов с ручным приоритетом | Обычно ноль, если кто-то не менял приоритеты через nice |
| id (idle) | Простой процессора | Низкий id — процессор занят. Высокий id при высоком load — проблема с I/O |
| wa (iowait) | Процессор ждёт завершения операций ввода-вывода | Устойчиво выше 10–20% — медленный диск или перегруженная база |
| hi / si | Обработка аппаратных и программных прерываний | Высокий si бывает при интенсивной сетевой нагрузке |
| st (steal) | Время, которое гипервизор отдал другим виртуалкам | Заметный steal в облаке — перегрузка хоста, помочь может только провайдер или другой тариф |
MiB Mem : 7982.1 total, 512.4 free, 2140.7 used, 5329.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 5512.3 avail Mem
Swap — файл или раздел на диске, куда ядро выгружает редко используемые страницы памяти. Небольшое использование swap нормально. Опасны признаки активной подкачки: растущее used в Swap и высокий wa одновременно — система «ходит» по диску и тормозит.
free -h # та же картина в удобном виде
vmstat 1 5 # колонки si и so: сколько страниц читается и пишется в swap за секунду
| Колонка | Расшифровка |
|---|---|
| PID | Идентификатор процесса. Нужен для kill, renice, strace |
| USER | Пользователь, от которого запущен процесс |
| PR (priority) | Приоритет планировщика ядра. Для обычных процессов обычно 20 |
| NI (nice) | Настройка приоритета пользователем: от -20 (самый высокий) до 19 (самый низкий) |
| VIRT | Вся виртуальная память процесса, включая то, что не загружено. Сильно больше реального потребления, мало о чём говорит |
| RES (resident) | Физическая память, которую процесс реально держит. Главный показатель потребления памяти |
| SHR | Часть RES, которая общая с другими процессами (библиотеки) |
| S (state) | Состояние: R — выполняется, S — спит, D — ждёт диск, Z — зомби, T — остановлен |
| %CPU | Доля процессорного времени за последний интервал. Может быть больше 100% на многоядерных системах |
| %MEM | Доля физической памяти от общего объёма |
| TIME+ | Общее процессорное время, которое процесс уже использовал |
| COMMAND | Имя программы или команда запуска |
Все команды работают прямо в интерактивном режиме. Экран не блокирует работу, поэтому можно сортировать, фильтровать и завершать процессы.
| Клавиша | Действие |
|---|---|
q | Выход |
1 | Показать загрузку каждого ядра отдельно |
t / m | Переключить вид строк CPU и памяти (графика или цифры) |
P | Сортировать по %CPU |
M | Сортировать по памяти |
T | Сортировать по TIME+ |
k | Отправить сигнал процессу (по умолчанию SIGTERM, введите PID) |
r | Изменить приоритет (nice) процесса |
u | Показать процессы только одного пользователя |
c | Показать полную команду запуска вместо имени |
H | Показывать потоки вместо процессов |
V | Показать дерево процессов (родитель и дочерние) |
d | Изменить интервал обновления |
W | Сохранить настройки в файл ~/.toprc |
? | Подсказка по всем клавишам |
top -bn1 # один снимок в обычный текст (для скриптов и логов)
top -b -n 3 -d 5 > top.log # три снимка с интервалом 5 секунд в файл
top -p 1187,4312 # следить только за указанными PID
top -u www-data # только процессы пользователя
top -o %MEM # сортировка по памяти при запуске
top -H -p 1187 # потоки конкретного процесса
-b — пакетный режим, без интерактивного ввода, удобно для скриптов;-n — сколько кадров вывести перед выходом;-d — интервал обновления в секундах;-p — фильтр по PID, можно указать несколько через запятую.top -bn1 -o %CPU | head -n 15 можно вписать в скрипт мониторинга или отправить в тикет.htop — более удобная версия top с цветами, мышью и наглядными полосками. Установка: sudo apt install htop (Debian/Ubuntu) или sudo dnf install htop (RHEL/Fedora).
F5: сразу видно, кто кого запустил;F3, фильтр F4, отправка сигнала F9, сортировка мышью;| Цвет полосы CPU (htop) | Что означает |
|---|---|
| Зелёный | Обычная пользовательская нагрузка (user) |
| Красный | Работа ядра (system) |
| Синий | Низкоприоритетные процессы (nice) |
| Серый / оранжевый | Ожидание I/O или steal, в зависимости от версии |
nproc. Например, load 12 на 4 ядрах.iostat -x 1 и vmstat 1.M и смотрим RES.dmesg -T | grep -i oom.P, запоминаем PID.c.strace -p PID покажет, какие системные вызовы он делает.Поле st растёт, а ваши процессы простаивают. Это значит, что хост перегружен и гипервизор не даёт вашей виртуалке процессорное время. Внутри системы это не исправить: нужна поддержка провайдера или смена тарифа.
В строке Tasks растёт zombie. Зомби не потребляют CPU и память, но показывают, что родитель не забирает статус дочернего процесса. Найдите родителя: ps -o ppid= -p PID_ЗОМБИ, затем исправьте программу или перезапустите её.
top -bn1 | head -n 15.top -b -n 5 -d 2 > /tmp/top-incident.log.H.vmstat, iostat, free, ss. Одна картина из нескольких источников надёжнее одного числа.| Команда / клавиша | Для чего |
|---|---|
top | Интерактивный монитор |
top -bn1 | Один снимок в текст |
nproc | Число ядер для сравнения с load |
free -h | Память в удобном виде |
vmstat 1 5 | Память, swap, I/O и CPU по секундам |
iostat -x 1 | Нагрузка на диски |
P / M / T | Сортировка по CPU, памяти, времени |
1 | Загрузка каждого ядра |
k | Сигнал процессу |
H | Потоки вместо процессов |
htop | Удобная альтернатива с цветами и мышью |