Как найти и завершить процесс в Linux
Чтобы завершить процесс в Linux, сначала найдите его PID (идентификатор) командами ps или pgrep, затем отправьте сигнал через kill. Для завершения по имени удобны pkill и killall. Разберём по порядку.
Шаг 1. Найдите процесс
Показать все процессы и отфильтровать по имени через grep:
ps aux | grep nginx
В выводе второй столбец — PID. Более прямой способ — pgrep, который сразу возвращает идентификаторы:
pgrep -a nginx
Флаг -a показывает PID вместе с командной строкой.
Если процесс держит сетевой порт, найдите его по порту:
sudo ss -ltnp | grep :80
Шаг 2. Завершите процесс по PID
Стандартная команда — kill. По умолчанию она отправляет сигнал TERM (15) — вежливую просьбу завершиться, дав процессу сохранить данные:
kill 12345
Если процесс не реагирует, отправьте сигнал KILL (9) — принудительное завершение без возможности сохраниться:
kill -9 12345
Сначала всегда пробуйте обычный kill, и только если процесс завис — -9.
Завершение по имени: pkill и killall
Не обязательно искать PID — можно завершить процесс по имени.
pkill работает по частичному совпадению имени:
pkill nginx
pkill -9 nginx
killall завершает все процессы с точным именем:
killall nginx
Будьте осторожны: pkill php завершит все процессы, в имени которых есть php.
Завершение в htop
Графический способ — через htop:
htop
Найдите процесс (клавиша F3 для поиска), выделите его стрелками и нажмите F9. Выберите сигнал (обычно SIGTERM, затем SIGKILL) и подтвердите.
Основные сигналы
| Сигнал | Номер | Действие |
|---|---|---|
| SIGTERM | 15 | Мягкое завершение (по умолчанию) |
| SIGKILL | 9 | Принудительное завершение |
| SIGHUP | 1 | Перечитать конфиг / рестарт |
| SIGINT | 2 | Прерывание (как Ctrl+C) |
Перезагрузить конфигурацию службы без остановки часто можно так:
kill -HUP 12345
Поиск процесса, грузящего систему
Найти самый прожорливый процесс по CPU:
ps aux --sort=-%cpu | head
По памяти:
ps aux --sort=-%mem | head
Частые вопросы
Чем kill -15 отличается от kill -9?
-15 (TERM) просит процесс завершиться корректно: закрыть файлы, сохранить данные. -9 (KILL) убивает мгновенно, процесс не успевает ничего сохранить. Начинайте с -15.
Процесс не завершается даже с -9. Что делать?
Такое бывает с процессами в состоянии D (непрерываемый сон, обычно ожидание диска). Их нельзя убить, пока не завершится операция ввода-вывода; иногда помогает только перезагрузка.
Как завершить процесс, зная только порт?
Найдите PID через sudo ss -ltnp | grep :ПОРТ, затем kill PID. Либо одной командой: sudo fuser -k 80/tcp.
Опасно ли использовать killall?
Он завершает все процессы с указанным именем. Проверьте список заранее через pgrep -a имя, чтобы не остановить лишнее.
Итог
Связка ps/pgrep для поиска и kill/pkill для завершения покрывает почти все задачи управления процессами. Правило простое: сначала мягкий TERM, и только для зависших — KILL.
Управляете своим сервером? Возьмите VPS на Linux, оформите аренду VPS или закажите Администрирование серверов, если мониторинг удобнее доверить специалистам.
