Какова цель-9 опций в команде уничтожения?

Есть ли различие между

kill -9 212121

и

kill 212121
52
задан 4 September 2012 в 22:05

4 ответа

Страница справочника Ubuntu для kill объясняет цель -9 переключатель (по общему признанию довольно изменчивым способом):

Name     Num   Action    Description
KILL       9   exit      cannot be blocked
<час>

Вот то, что говорит другая страница справочника .

команда kill отправляет указанный сигнал указанной группе процесса или процесса. Если никакой сигнал не указан, эти TERM, сигнал отправляется. Эти TERM сигнал уничтожит процессы, которые не ловят этот сигнал. Для других процессов может быть необходимо использовать KILL (9) сигнал, так как этот сигнал не может быть пойман.

<час>

Поэтому использование эти -9 переключатель гарантирует, что процесс эффективно уничтожается. Даже при том, что замороженный или безразличный процесс не может ответить на простое TERM сигнал В, он умрет при отправке KILL сигнал.

28
ответ дан 21 October 2019 в 11:04

уничтожают , команда отправит определенный сигнал к процессу с данными идентификационными данными (PID):

kill -<signal> <pid>

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

Сигналы kill могут отправить, перечислены в страница справочника . Сигнал может быть представлен по имени или числом. Если никакому сигналу не дают сигнал 15 по умолчанию resp. TERM используется.

Все три команды ниже поэтому идентичны:

kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234

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

  • TERM : приложение сможет завершить, т.е. правильно выполнить стандартную программу завершения работы.
  • KILL : приложения останавливаются и сразу уничтожаются (который мог привести к потере данных или повышению по левую сторону судна для создания отчетов о предполагаемом катастрофическом отказе в некоторых случаях).
40
ответ дан 21 October 2019 в 11:04

уничтожают-9 Значение: процесс будет уничтожен ядром; этот сигнал не может быть проигнорирован. 9 Сигналов уничтожения средств, которые не catchable или игнорируемые

Использование: SIGKILL singal

Уничтожают Значение: команда уничтожения без любого сигнала передает сигнал 15, который завершает процесс нормальный путь.

Использование: сигнал SIGTERM, который может быть обработан программистами

6
ответ дан 21 October 2019 в 11:04

Обратите внимание, что все следующее синонимично:

kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234

стоит указать, что в мире обработки сигнала, SIGKILL является одним из нескольких уникальных, который обрабатывается операционная система не программа. Когда Вы работаете kill -9, Вы не говорите приложению завершать себя, вместо этого Вы говорите ОС прекращать запускать программу, независимо от того, что делает программа.

После SIGKILL отправляется, программа будет сразу остановлена. Если какие-либо вызовы ядра работают (например, Файл IO) от имени программы, те вызовы могут или не могут продолжиться, пока они не закончат, в зависимости от вызова, но сама программа не будет больше работать. Обратите внимание, что проследил , задачи или задачи, работающие под отладчиком, могут вести себя по-другому здесь.

другой сигнал, который не может быть заблокирован, SIGSTOP, который имеет подобный эффект, но вместо этого замораживания программа; можно отправить SIGCONT позже для возобновления его. Этим поведением полностью управляет ОС, и программа не получает предшествующего уведомления.

Все другие сигналы отправляются в программу; это может обработать их однако, это выбирает, или если это игнорирует сигнал затем, поведение по умолчанию сопровождается.

Вот несколько полезных сигналов, что можно отправить в процесс:

  • SIGHUP - зависание
    Говорит программе, что пользователь разъединился (например, сессия SSH, или окно терминала закрылось).
    Обычно делает корректное завершение работы программы.
  • SIGINT - прерывание
    , Отправленное, когда Вы совершаете нападки CTRL + C
    Обычно, означает "остановку, что Вы делаете" - может или может не уничтожить программу
  • SIGTERM - оконечный
    значение по умолчанию, отправленное kill и killall.
    Обычно завершает программу... иногда после того, как программа заканчивает то, что она делает.
  • SIGSTOP - остановка
    Отправленный, когда Вы совершаете нападки CTRL + Z
    , Приостанавливает программу, обсужденную выше
  • SIGPIPE - , канал закрылся
    , Говорит программе, что конвейер закрылся. Обычно завершает программу.
    , Например cat /etc/passwd | head -n1 отправит SIGPIPE в эти cat процесс после того, как первая строка будет распечатана, заставляя cat завершаться прежде, чем закончить целый файл.

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

, Например, если Вы хотите завершить чью-то сессию SSH, можно просто уничтожить процесс, но путем выполнения, таким образом, Вы будете препятствовать тому, чтобы он обновил свой файл ИСТОРИИ, который может быть важен для соображений безопасности. Но вместо этого при отправке его SIGHUP затем процесс предположит, что соединение умерло и выполнит свою стандартную очистку.

16
ответ дан 21 October 2019 в 11:04

Другие вопросы по тегам:

Похожие вопросы: