Поиск по сайту:

Плохи, согласен, стихи, но кто их читать заставляет? (Овидий).

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

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
19 декабря 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.

 

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

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

kill -9 <process_id>

 

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

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

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

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читайте также

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close