Поиск по сайту:
И малым тварям удаются великие творения (Станислав Ежи Лец).

SIGTERM против SIGKILL: в чем разница?

19.12.2019
SIGTERM против SIGKILL: в чем разница?

Завершение процесса является важной частью управления процессами в Linux.

Поскольку управление процессами является отдельной темой, мы не будем подробно останавливаться на управлении пользовательскими процессами и обработке сигналов в этом посте.

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

 

Что такое SIGTERM?

В UNIX-подобных системах сигнал SIGTERM используется для завершения программы. Вы можете догадаться об этом по его названию, которое состоит из SIGnal и TERMinate.

SIGTERM также может называться «мягким уничтожением», поскольку процесс, который получает сигнал SIGTERM, может игнорировать его.

Другими словами, это вежливый способ убить процесс.

 

Как отправить SIGTERM процессу в Linux?

Команда kill в Linux используется для отправки всех таких сигналов процессам.

По умолчанию команда kill отправляет сигнал SIGTERM. Вы можете явно указать это с -15, но это излишне.

Вам нужно знать pid процесса, чтобы использовать эту команду следующим образом:

kill <process_id>

 

Вы можете использовать команду ps в Linux, чтобы получить идентификатор процесса.

 

Что такое SIGKILL?

SIGKILL используется для немедленного прекращения процесса. Этот сигнал нельзя игнорировать или заблокировать. Процесс будет завершен вместе с его потоками (если есть).

Это жесткий способ убить процесс, и его следует использовать только как последнее средство. Предположим, у вас есть не отвечающий процесс, который вы хотите закрыть. В таком случае можно использовать SIGKILL.

Читать  Как установить NixOS

 

Как отправить SIGKILL процессу в Linux?

Вы можете использовать опцию -9, чтобы отправить сигнал SIGKILL с командой kill и немедленно завершить процесс:

kill -9 <process_id>

 

SIGTERM vs SIGKILL: Почему вы должны использовать SIGTERM вместо SIGKILL?

Хотя оба эти сигнала используются для уничтожения процесса, между ними есть некоторые различия:

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

Некоторые пользователи Linux привыкли использовать kill -9, и этого следует избегать. Если у вас нет процесса без ответа, вам не нужно использовать SIGKILL.

С помощью SIGTERM процесс получает время для отправки информации своим родительским и дочерним процессам. Это дочерние процессы обрабатываются init.

Использование SIGKILL может привести к созданию процесса зомби, потому что уничтоженный процесс не получает возможности сообщить своему родительскому процессу, что он получил сигнал уничтожения.

Мы надеемся, что вы теперь лучше понимаете, как убить процесс с помощью SIGTERM или SIGKILL.

Если у вас есть какие-либо вопросы или предложения, пожалуйста, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Поисковая оптимизация - для краткости SEO - является важной частью…

Спасибо!

Теперь редакторы в курсе.