Гид по технологиям

Как завершить зависший процесс в Linux с помощью kill и pkill

4 min read Linux Обновлено 13 Apr 2026
Как завершить зависший процесс в Linux (kill, pkill)
Как завершить зависший процесс в Linux (kill, pkill)

TL;DR

Коротко: используйте kill по PID и pkill по имени процесса. SIGTERM (15) просит программу завершиться корректно; SIGKILL (9) принудительно убивает процесс. Получите PID с помощью ps, pgrep или системного монитора; при необходимости используйте sudo.

Важно: сначала пробуйте SIGTERM, затем — SIGKILL, если процесс не реагирует.

как завершить незавершённый процесс с помощью kill и pkill

Работать с зависшими программами проще, когда вы понимаете, какие сигналы есть и как безопасно их применять. Ниже — понятная инструкция, чек‑листы для разных ролей, таблицы и схема принятия решений.

Основы: что такое SIGTERM и SIGKILL

SIGTERM (номер 15) — дружелюбный сигнал для корректного завершения. Программы могут его перехватить и сохранить данные.

SIGKILL (номер 9) — принудительное уничтожение процесса; процесс не может обработать этот сигнал и завершается без очистки.

Короткое правило: сначала SIGTERM, если не помогает — SIGKILL.

Завершение зависшего процесса с помощью kill

Команда kill отправляет сигнал конкретному PID.

Пример: остановка процесса с PID 27065.

kill 27065

Отправка SIGKILL (принудительное завершение):

kill -9 27065
kill -SIGKILL 27065

Разница: SIGTERM даёт процессу шанс корректно завершиться; SIGKILL уничтожает мгновенно.

остановка зомби процесса с помощью команды kill в Linux

Список доступных сигналов можно посмотреть так:

kill -l
kill -L

Совет: для системных демонов и процессов с доступом к данным сначала сигнализируйте SIGTERM, ожидайте пару секунд и лишь затем применяйте SIGKILL.

Завершение процессов по имени с помощью pkill

pkill убивает процессы по совпадению имени. Это удобно, когда PID неизвестен или процессов несколько.

Пример:

pkill nano

Принудительное завершение:

pkill -9 nano

завершение зависшего процесса в Linux с помощью pkill

pkill по умолчанию отправляет SIGTERM. Будьте аккуратны: pkill совпадает по шаблону имени и может затронуть несколько процессов.

Как узнать PID процесса

PID — ключевой идентификатор процесса. Несколько способов получить PID:

  • ps + grep:
ps aux | grep nano
  • pgrep (выдаёт только PID):
pgrep nano
  • top или htop — интерактивные мониторы процессов.

поиск идентификатора процесса (PID) в Linux

Если процесс принадлежит другому пользователю, потребуется sudo:

sudo kill 27065

Мини‑методология: быстрый план действий при зависании

  1. Оцените ситуацию: локальная программа или системный демон? Сохранены ли данные?
  2. Получите PID (pgrep/ps/top).
  3. Отправьте SIGTERM и подождите 3–10 секунд.
  4. Если ответ отсутствует — отправьте SIGKILL.
  5. Проверьте логи (journalctl, /var/log) и причины зависания.

Чек‑лист по ролям

Пользователь:

  • Получить PID через pgrep или ps.
  • Попробовать kill PID.
  • При необходимости попросить админа о sudo.

Системный администратор:

  • Оценить влияние на сервисы.
  • Использовать systemctl stop для системных юнитов, если применимо.
  • Если процесс не умирает — SIGKILL и последующий анализ логов.

Разработчик:

  • Проверить обработчики сигналов в коде.
  • Добавить журналирование на SIGTERM.

Альтернативные инструменты и подходы

  • killall <имя> — аналог pkill, убивает все процессы по имени (в behaviour может отличаться в разных дистрибутивах).
  • systemctl stop — для systemd‑юнитов останавливает сервис корректно.
  • htop — интерактивный монитор с возможностью выделения процесса и отправки сигнала.
  • docker kill / docker stop — для контейнеров используйте команду контейнера.

Когда pkill/kill не помогут: если процесс в состоянии D (uninterruptible sleep) ядро ждёт I/O — только перезагрузка или устранение причины I/O помогут.

Таблица сигналов: краткое сравнение

СигналНомерОписаниеИспользовать когда
SIGTERM15Вежливый запрос завершитьсяОбычное завершение, сохранить данные
SIGKILL9Принудительное убийствоПроцесс не отвечает на SIGTERM
SIGHUP1Перезагрузить/перечитать конфигПерезагрузка демона без остановки хоста

Схема принятия решения

flowchart TD
  A[Процесс завис] --> B{Можно сохранить данные?}
  B -->|Да| C[Отправить SIGTERM]
  B -->|Нет/Не важно| D[Отправить SIGTERM]
  C --> E[Подождать 3–10 с]
  D --> E
  E --> F{Процесс завершился?}
  F -->|Да| G[Проверить логи и причины]
  F -->|Нет| H[Отправить SIGKILL]
  H --> I[Если не помог — исследовать D‑состояние или перезагрузить]
  G --> J[Готово]
  I --> J

Критерии приёмки

  • Процесс завершён и не отображается в ps/pgrep.
  • Сервис, зависящий от процесса, работает или корректно перезапущен.
  • Логи проанализированы и сделаны заметки о причине зависания.

Сценарии, когда подходы не работают

  • Процесс в состоянии D (uninterruptible sleep) — сигнал не действует.
  • Зависание связано с аппаратной проблемой (диск, сеть) — требуется устранение причины.
  • Процесс зомби (state Z) уже завершился, но родитель не собрал статус — нужно убить родителя или дождаться его.

Советы по безопасности и правам доступа

  • Не применяйте SIGKILL вслепую к системным процессам — это может привести к потере данных.
  • На многопользовательской системе получите разрешения у администратора.
  • Используйте sudo только при необходимости и фиксируйте действия.

Короткая памятка (чек‑шит)

  • Узнать PID: pgrep <имя> или ps aux | grep <имя>
  • Мягко убить: kill
  • Принудительно: kill -9 или pkill -9 <имя>
  • Для systemd: systemctl stop

Однострочные определения (глоссарий)

  • PID — идентификатор процесса в системе.
  • SIGTERM — вежливый запрос завершиться.
  • SIGKILL — принудительное мгновенное завершение.
  • pkill/killall — команды для завершения по имени.

Заключение

Команды kill и pkill — надёжные инструменты для завершения зависших процессов в Linux. Начинайте с мягкого SIGTERM, анализируйте логи и переходите к SIGKILL только при необходимости. В многопользовательских средах согласуйте действия с администратором.

Дополнительные ресурсы: используйте htop для интерактивного контроля и systemctl для управления сервисами.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как перечислить ветки в Git
GIT

Как перечислить ветки в Git

Сенсорная и экранная клавиатура в Windows 11
Windows

Сенсорная и экранная клавиатура в Windows 11

Как начать блог на Blogger быстро и правильно
Блогинг

Как начать блог на Blogger быстро и правильно

Как получить бесплатный SSL и установить его
Безопасность

Как получить бесплатный SSL и установить его

Как встраивать Google Форму в WordPress
WordPress

Как встраивать Google Форму в WordPress

Экологичные бытовые технологии: вклад TCL
Экология

Экологичные бытовые технологии: вклад TCL