Процессы и нагрузка: load average, top, htop, ps и kill
Что означает load average, как найти процесс, который грузит процессор или память, через top, htop и ps, и как его корректно завершить. Ubuntu, Debian, AlmaLinux.

Сервер стал отвечать с задержкой, сайт открывается через раз, график процессора упёрся в потолок. Чтобы понять причину, нужно посмотреть, какие программы работают и сколько ресурсов забирают. Для этого хватает четырёх команд: uptime, top, htop и ps, плюс kill, чтобы остановить виновника.
Для экспериментов подойдёт любой VPS с Ubuntu или Debian; на tanaka.host сервер можно взять на день-два, пройти инструкцию и удалить без лишних трат.
Что такое нагрузка
Каждая запущенная программа — процесс с номером PID, пользователем и состоянием. Большую часть времени почти все процессы спят: веб-сервер ждёт соединений, база — запросов, процессор им не нужен. Его занимают только процессы в состоянии R (running), которые прямо сейчас считают или стоят в очереди на ядро.
Load average — средняя длина этой очереди за 1, 5 и 15 минут, например 2.24, 1.03, 0.50. Linux добавляет сюда и процессы, которые ждут диск и не могут быть прерваны, поэтому при медленном диске нагрузка растёт даже со свободным процессором.
Само по себе число ничего не говорит, пока не сравнить его с количеством ядер. На 4 ядрах нагрузка 2 означает половину простоя, 4 — все ядра заняты, 8 — на каждое ядро по два желающих, и всё начинает тормозить. Три числа читайте вместе: первое заметно больше третьего — нагрузка выросла недавно и, возможно, растёт; первое меньше — пик позади.
В строке %Cpu(s) у top есть разбивка времени:
| Поле | Что значит |
|---|---|
us |
время программ пользователя |
sy |
работа ядра |
id |
простой |
wa |
ожидание диска |
st |
steal — время, когда виртуальному серверу был нужен процессор, а физический был занят соседями |
На VPS st стоит проверять: если он стабильно выше нескольких процентов, проблема не в ваших программах.
1. Общая картина
uptime
nproc
Сравните первое число load average с количеством ядер. Если нагрузка заметно выше — ищите, кто её создаёт.
2. Найдите процесс в top
top есть на любом сервере. -o %CPU сортирует по загрузке процессора:
top -o %CPU
Вверху — load average, число процессов, разбивка времени и память. В таблице важны колонки:
- PID — номер процесса, понадобится для
kill; - USER — от чьего имени работает;
- %CPU — 100 % это одно ядро целиком, на многоядерном сервере бывает и 300 %;
- RES — сколько оперативной памяти процесс занимает фактически;
- COMMAND — имя программы.
Клавиши внутри top: M сортировка по памяти, P — снова по процессору, q — выход.
3. Поставьте htop
То же самое, но нагляднее — цветные шкалы по каждому ядру и памяти, выбор процесса стрелками.
sudo apt install -y htop # Ubuntu, Debian
sudo dnf install -y htop # AlmaLinux, Rocky (нужен EPEL)
htop
F6 — выбрать колонку сортировки, F5 — дерево процессов, F9 — завершить выбранный, F10 или q — выход. На телефоне, где F-клавиш нет, нажимайте подписи внизу экрана.
4. Список процессов через ps
top и htop для наблюдения, ps — для поиска и скриптов: выводит список один раз и завершается.
# Пять процессов, которые больше всего грузят процессор
ps aux --sort=-%cpu | head -6
# То же по памяти
ps aux --sort=-%mem | head -6
# Найти процесс по имени и показать PID
pgrep -a nginx
5. Завершите процесс
По PID или по имени:
# Вежливо попросить завершиться
kill 225145
# Все процессы с таким именем
pkill yes
kill без параметров шлёт сигнал TERM: программа может сохранить данные, закрыть файлы и выйти сама. Если не реагирует — сигнал KILL, который система выполняет принудительно:
kill -9 225145
Сначала обычный kill.
kill -9не даёт программе ничего сохранить, база данных или сайт после него могут потерять последние изменения. Используйте только когда TERM не помог. Службы вроде Nginx или MySQL правильнее перезапускать черезsystemctl restart, а не убивать руками — см. службы systemd.
Частые вопросы
Нагрузка высокая, а в top нет процессов с большим %CPU. Смотрите wa. Если оно большое, процессы ждут диск. Кто именно читает и пишет — вкладка I/O в htop или iotop (apt install -y iotop).
Убил процесс, через минуту он снова здесь. Это служба с автоперезапуском или задача cron. Выясните, чья она, через systemctl status PID, и останавливайте саму службу. Про cron — отдельная статья.
Что за zombie в top. Процесс завершился, но родитель ещё не забрал код выхода. Память и процессор не занимает, обычно исчезает сам. Если зомби всё больше — проблема в программе-родителе, помогает её перезапуск.
Сервер перегружен постоянно. Если процессор или память заняты обычной работой ваших программ, ресурсов просто не хватает. С памятью временно поможет swap, но надёжнее — тариф мощнее.
Дальше: логи и journalctl — чтобы понять, почему процесс ведёт себя так.