← Все вопросы

Как остановить (убить) зависший процесс в Linux через kill?

Задан 8 месяцев назад529 просмотров2 ответа
9

Программа зависла и не закрывается, порт остаётся занят. Узнал её PID, теперь хочу её принудительно завершить из терминала. Как убить процесс через kill и чем отличается kill от kill -9?

2 ответа

10
✓ Принятый ответ — помог автору

Завершить процесс по его номеру (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.

4

Памятка по остановке процессов:

  • kill PID — мягко завершить (сигнал 15, TERM).
  • kill -9 PID — жёстко прибить (сигнал 9, KILL), крайняя мера.
  • pkill имя / killall имя — убить по имени, а не по PID.
  • Ctrl+C — остановить программу, запущенную прямо сейчас в этом терминале (не нужен PID).

Если процесс запущен в текущем окне и ты его видишь — проще всего Ctrl+C, а kill нужен для фоновых/чужих процессов.

Ваш ответ

Войдите, чтобы ответить на вопрос.