Процессы в Linux: команды ps, top, htop и kill
Процесс — запущенная программа. ps показывает их список, top и htop — тот же список, который обновляется сам, kill и pkill останавливают программы. Ниже — как найти, кто занял память или процессор, и как его остановить.
Содержание 10
Что сделать прямо сейчас
- Подключитесь к серверу — инструкция.
- Наберите
topи нажмите Enter. Наверху списка — программы, которые сильнее всего грузят процессор. НажмитеM, чтобы сверху оказались те, что заняли больше памяти. - Запишите номер нужной строки из колонки
PIDи нажмитеq, чтобы выйти. - Если это служба — nginx, MySQL, PHP — перезапустите её через systemctl: как.
- Если это другая программа, остановите её:
kill 1234, где 1234 — номер из PID.
Команда ps: список программ
ps auxТри буквы — три ключа: a — программы всех пользователей, u — подробные колонки с владельцем, x — и те, что работают без терминала, например службы. Минус перед ними не ставят.
| Колонка | Что значит |
|---|---|
USER | от чьего имени работает программа |
PID | номер процесса — его указывают в kill |
%CPU | доля процессора в среднем за всё время работы программы |
%MEM | доля оперативной памяти |
VSZ | виртуальная память в кибибайтах — больше той, что занята на деле |
RSS | сколько оперативной памяти программа занимает сейчас, в кибибайтах |
TTY | терминал; ? — программа работает без терминала |
STAT | состояние — таблица ниже |
START | когда программа запущена |
TIME | сколько процессорного времени она уже израсходовала |
COMMAND | команда, которой её запустили |
%CPU в ps — среднее за всё время, а не нагрузка в эту секунду. Что грузит процессор прямо сейчас, показывает top.
Состояние в колонке STAT
| Буква | Что значит |
|---|---|
R | работает или ждёт очереди к процессору |
S | спит и ждёт события — так выглядят программы, которые ждут запросов |
D | ждёт диск или другое устройство, прервать нельзя |
I | служебный поток ядра без работы |
T | остановлена |
Z | зомби: программа завершилась, но запись о ней ещё не убрана |
Буквы после первой — дополнения: s — главный процесс сеанса, l — у программы несколько потоков, + — работает в терминале на переднем плане, < и N — высокий и низкий приоритет.
Кто занял память или процессор
ps aux --sort=-%mem | head -6
ps aux --sort=-%cpu | head -6Первая команда покажет пять программ, которые заняли больше всего памяти, вторая — процессора. Минус перед %mem значит «от большего к меньшему», head -6 оставляет строку заголовка и пять строк под ней.
Найти программу по имени
pgrep -a nginxpgrep выводит номер процесса и команду, которой его запустили. Если ничего не вывел — программ с таким именем нет. Вариант ps aux | grep nginx тоже работает, но в ответе может оказаться и строка самого grep.
top: список, который обновляется сам
top показывает программы и обновляет список раз в несколько секунд. Наверху — сводка: нагрузка, сколько процессов, процессор и память. Под ней — программы, сначала те, что сильнее грузят процессор.
| Клавиша | Что делает |
|---|---|
M | сверху — кто занял больше памяти |
P | сверху — кто сильнее грузит процессор |
T | сверху — кто израсходовал больше процессорного времени |
N | по номеру процесса |
k | остановить процесс: top спросит номер и сигнал |
q | выйти |
Буквы — заглавные: нажимайте их с Shift. Если top занял весь экран и не реагирует на Enter, это нормально — выход клавишей q.
htop: то же, но нагляднее
htop показывает загрузку каждого ядра процессора полосками, программы можно выбирать стрелками. Если терминал отвечает, что такой команды нет, установите её: sudo apt install htop.
| Клавиша | Что делает |
|---|---|
F6 | выбрать колонку для сортировки |
F3 или / | найти программу по части команды |
F4 | оставить в списке только подходящие программы |
F9 или k | остановить выбранную программу: htop предложит выбрать сигнал |
F10 или q | выйти |
Если F-клавиши не работают — на ноутбуке их может перехватывать система, — нажимайте их вместе с клавишей Fn или берите буквенные варианты.
Как остановить программу: kill
- Узнайте номер процесса:
pgrep -a имяили колонка PID в top. - Попросите программу завершиться:
kill 1234. kill без ключей посылает сигнал TERM — программа успеет сохранить данные и закрыться сама. - Подождите несколько секунд и проверьте:
ps -p 1234. Если в ответе только заголовок, программа завершилась. - Если не завершилась, остановите принудительно:
kill -9 1234. Это сигнал KILL — программа не может его перехватить и закрывается сразу, не сохранив данные.
kill -9 — крайняя мера: база данных, остановленная так, при следующем запуске может восстанавливать свои файлы. Программы другого пользователя останавливают через sudo kill 1234. Список всех сигналов — kill -l.
| Ответ | Что значит | Что сделать |
|---|---|---|
bash: kill: (1234) - No such process | процесса с таким номером нет | он уже завершился или номер с опечаткой; проверьте pgrep -a имя |
bash: kill: (1234) - Operation not permitted | программа другого пользователя | sudo kill 1234 |
pkill: остановить по имени
pkill останавливает все процессы, имя которых подходит под шаблон, и тоже посылает TERM. Имя ищется как часть: pkill php остановит и php-fpm, а с ним и сайт. Поэтому сначала посмотрите, что попадёт под шаблон, и только потом останавливайте:
pgrep -af backup.sh
pkill -f backup.sh-f нужен на случай, если скрипт запущен как bash backup.sh: тогда имя процесса — bash, а backup.sh есть только в команде запуска.
| Ключ | Что делает |
|---|---|
-x | только точное совпадение имени |
-u ivan | только программы пользователя ivan |
-f | искать по всей команде запуска, а не только по имени |
Имя процесса для поиска обрезано до 15 символов. Если длинное имя не находится, ищите с ключом -f.
| Код выхода | Что значит |
|---|---|
| 0 | нашлись подходящие процессы, pkill отправил им сигнал |
| 1 | ничего не нашлось или сигнал отправить не удалось |
| 2 | ошибка в команде |
| 3 | сбой самой программы, например не хватило памяти |
Службы перезапускайте через systemctl
nginx, MySQL, PHP-FPM и другие службы запускает systemd. Остановленная через kill служба может остаться выключенной, или systemd запустит её снова — это зависит от её настроек. Правильнее управлять службой через systemctl:
sudo systemctl restart nginx
systemctl status nginxПервая команда перезапускает службу, вторая показывает, работает ли она. Если служба не запускается, разбор ошибок — в статье Ошибки systemd и диска.
Зомби-процессы
Процесс с буквой Z уже завершился: память и процессор он не тратит, в списке остаётся только запись о нём. kill на него не действует — запись убирает программа, которая его запустила. Если зомби много и они не пропадают, перезапустите эту программу или службу.
Источники
- Справка ps для Ubuntu 24.04 — запись ps aux, сортировка --sort, колонки %CPU, %MEM, VSZ, RSS и STAT.
- Исходный код procps 4.0.4: output.c — колонки, которые выводит ps aux.
- Справка top для Ubuntu 24.04 — клавиши q, M, P и k.
- Справка htop для Ubuntu 24.04 — клавиши F3, F4, F6, F9 и F10.
- Справка kill для Ubuntu 24.04 — сигнал TERM по умолчанию, запись -9, -KILL и список kill -l.
- Исходный код bash 5.2: kill.def — сигнал TERM по умолчанию и текст ошибки с номером процесса.
- Справка signal для Ubuntu 24.04 — сигналы KILL и STOP нельзя перехватить или пропустить.
- Справка pkill для Ubuntu 24.04 — команды pgrep и pkill, ключи -a, -f, -x, -u.
Сверено 11 октября 2026 года.
Что почитать дальше
- Load averageчто значат три числа нагрузки и когда серверу не хватает процессора.
- Команда tmuxкоманды, которые не прерываются при обрыве SSH.
- Команда systemctlзапустить, остановить и перезапустить службу, включить автозапуск.
- Команда freeсколько памяти свободно.
- Out of memory: Killed processесли программы закрываются из-за нехватки памяти.
- Ошибки systemd и дискаесли служба не запускается.
- Команды Linux для новичкашпаргалка по командам.
Проверено и обновлено: 11.10.2026