KILL — Завершение процессов

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

KILL — Завершение процессов

Сообщение root »

Оглавление
KILL — завершение процессов в Linux/Unix
Введение
Иногда в системе появляется "зависший" процесс, который не реагирует ни на что.
Самое простое и известное средство — команда kill.
Но важно понимать, какие сигналы она посылает и в каких случаях применять каждый из них.
Поиск зависшего процесса
Посмотрим активные сеансы:

Код: Выделить всё

w
 21:16:47 up 4:03,  2 users,  load average: 1.09, 0.59, 0.52
 USER     TTY      FROM              LOGIN@   IDLE   JCPU  PCPU WHAT
 root     tty1                         20:14   57:19   0.06s 0.06s -bash
 root     pts/0   sergey6.free-adm    21:13    7.00s  0.03s 0.00s w
Допустим, сеанс на tty1 завис.
Найдём процесс, связанный с ним:

Код: Выделить всё

ps -ft tty1
UID        PID  PPID  C STIME TTY      TIME CMD
root      4703   699  0 20:14 tty1     00:00:00 -bash

Мягкое завершение (SIGTERM, SIGINT, SIGHUP)
Перед тем как применять "жёсткий" сигнал, попробуем мягкие варианты:

Код: Выделить всё

kill 4703           # SIGTERM (по умолчанию)
kill -INT 4703      # Прерывание (Ctrl+C)
kill -HUP 4703      # "Повесить трубку" — используется демонами для перезагрузки конфигурации
Если процесс всё ещё жив, можно убедиться:

Код: Выделить всё

ps -p 4703

Жёсткое завершение (SIGKILL)
Если другие сигналы не сработали:

Код: Выделить всё

kill -9 4703
Теперь проверяем:

Код: Выделить всё

w
 21:23:04 up 4:09, 1 user, load average: 0.31, 0.47, 0.49
 USER    TTY     FROM             LOGIN@   IDLE  JCPU  PCPU WHAT
 root    pts/0   sergey6.free-adm 21:13     0.00s 0.03s 0.00s w
Сеанс на tty1 пропал — процесс завершён.
Почему kill -9 — не панацея
  • SIGKILL не перехватывается и не обрабатывается — процесс просто исчезает, не успев очистить ресурсы.
  • Это может привести к "мусору" в системе: висячие сокеты, открытые файлы, блокировки, осиротевшие дочерние процессы.
  • Иногда даже kill -9 не помогает — если процесс "завис" в ядре (например, ожидает I/O на NFS-точке).
Рекомендации
Ситуация Действие
Обычный зависший процесс kill PID (SIGTERM)
Не реагирует kill -INT PID, kill -HUP PID
Не убивается kill -9 PID — только как крайняя мера
Не умирает даже от -9 Проверить состояние системы (D-статус), возможно, завис драйвер или файловая система. Поможет только перезагрузка.

Дополнительно
  • Для массового завершения процессов используйте или .
  • Чтобы увидеть процессы, "висящие" в D-состоянии (неубиваемые):

    Код: Выделить всё

    ps -eo pid,stat,cmd | grep D
  • Для предотвращения подобных ситуаций — следите за корректным завершением сервисов и используйте systemd-юниты с параметром

    Код: Выделить всё

    Restart=
    .

Заключение
kill -9 — инструмент "на крайний случай".
Если применять его с умом, можно безопасно управлять процессами, не рискуя повредить систему.
Главное правило администратора: сначала мягко, потом решительно.
Последний раз редактировалось root 12 авг 2026 17:56, всего редактировалось 1 раз.
Ответить