Как остановить (убить) зависший процесс в Linux через kill?
Программа зависла и не закрывается, порт остаётся занят. Узнал её PID, теперь хочу её принудительно завершить из терминала. Как убить процесс через kill и чем отличается kill от kill -9?
2 ответа
Завершить процесс по его номеру (PID) — команда kill.
Шаг 1. Узнай PID процесса (если ещё не знаешь):
ps aux | grep имя_программы
или lsof -i :8080, если процесс держит порт. PID — это число во второй колонке.
Шаг 2. Попроси процесс завершиться «вежливо»:
kill 12345
(где 12345 — твой PID). Это посылает сигнал TERM — процесс получает шанс корректно закрыться, сохранить данные.
Шаг 3. Если не помогло и процесс висит намертво — «жёсткое» убийство сигналом 9 (KILL):
kill -9 12345
Этот сигнал нельзя проигнорировать — процесс снимается принудительно немедленно.
Если знаешь только имя, а не PID, можно убить по имени:
pkill имя_программы
или killall имя_программы.
В чём разница kill и kill -9: обычный kill — это «закройся, пожалуйста» (процесс может прибраться). kill -9 — это «убить немедленно» без шанса сохраниться.
Частая ошибка: сразу бить kill -9 по любому поводу. Это может оставить повреждённые файлы или незакрытые ресурсы, потому что процесс не успел корректно завершиться. Правило: сначала обычный kill, и только если процесс реально завис и не реагирует — тогда kill -9.
Памятка по остановке процессов:
kill PID— мягко завершить (сигнал 15, TERM).kill -9 PID— жёстко прибить (сигнал 9, KILL), крайняя мера.pkill имя/killall имя— убить по имени, а не по PID.- Ctrl+C — остановить программу, запущенную прямо сейчас в этом терминале (не нужен PID).
Если процесс запущен в текущем окне и ты его видишь — проще всего Ctrl+C, а kill нужен для фоновых/чужих процессов.