Процессы и нагрузка: load average, top, htop, ps и kill

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

15 октября 2026 г.·4 мин чтения·top, htop, ps, load-average

Сервер стал отвечать с задержкой, сайт открывается через раз, график процессора упёрся в потолок. Чтобы понять причину, нужно посмотреть, какие программы работают и сколько ресурсов забирают. Для этого хватает четырёх команд: 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 — чтобы понять, почему процесс ведёт себя так.