Есть ли различие между
kill -9 212121
и
kill 212121
Страница справочника Ubuntu для kill
объясняет цель -9
переключатель (по общему признанию довольно изменчивым способом):
Name Num Action Description
KILL 9 exit cannot be blocked
<час> Вот то, что говорит другая страница справочника .
<час>команда
kill
отправляет указанный сигнал указанной группе процесса или процесса. Если никакой сигнал не указан, этиTERM
, сигнал отправляется. ЭтиTERM
сигнал уничтожит процессы, которые не ловят этот сигнал. Для других процессов может быть необходимо использоватьKILL
(9
) сигнал, так как этот сигнал не может быть пойман.
Поэтому использование эти -9
переключатель гарантирует, что процесс эффективно уничтожается. Даже при том, что замороженный или безразличный процесс не может ответить на простое TERM
сигнал В, он умрет при отправке KILL
сигнал.
уничтожают , команда отправит определенный сигнал к процессу с данными идентификационными данными (PID):
kill -<signal> <pid>
, Конечно, мы можем только уничтожить процессы, которыми мы владеем, тогда как корень может уничтожить все процессы. См. Википедия для хорошей сводки вычислений сигналов.
Сигналы kill
могут отправить, перечислены в страница справочника . Сигнал может быть представлен по имени или числом. Если никакому сигналу не дают сигнал 15 по умолчанию resp. TERM
используется.
Все три команды ниже поэтому идентичны:
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
различием между SIGTERM
и SIGKILL
является способ, которым приложение может действовать на сигнал:
TERM
: приложение сможет завершить, т.е. правильно выполнить стандартную программу завершения работы. KILL
: приложения останавливаются и сразу уничтожаются (который мог привести к потере данных или повышению по левую сторону судна для создания отчетов о предполагаемом катастрофическом отказе в некоторых случаях). уничтожают-9 Значение: процесс будет уничтожен ядром; этот сигнал не может быть проигнорирован. 9 Сигналов уничтожения средств, которые не catchable или игнорируемые
Использование: SIGKILL singal
Уничтожают Значение: команда уничтожения без любого сигнала передает сигнал 15, который завершает процесс нормальный путь.
Использование: сигнал SIGTERM, который может быть обработан программистами
Обратите внимание, что все следующее синонимично:
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
стоит указать, что в мире обработки сигнала, SIGKILL является одним из нескольких уникальных, который обрабатывается операционная система не программа. Когда Вы работаете kill -9
, Вы не говорите приложению завершать себя, вместо этого Вы говорите ОС прекращать запускать программу, независимо от того, что делает программа.
После SIGKILL отправляется, программа будет сразу остановлена. Если какие-либо вызовы ядра работают (например, Файл IO) от имени программы, те вызовы могут или не могут продолжиться, пока они не закончат, в зависимости от вызова, но сама программа не будет больше работать. Обратите внимание, что проследил , задачи или задачи, работающие под отладчиком, могут вести себя по-другому здесь.
другой сигнал, который не может быть заблокирован, SIGSTOP, который имеет подобный эффект, но вместо этого замораживания программа; можно отправить SIGCONT позже для возобновления его. Этим поведением полностью управляет ОС, и программа не получает предшествующего уведомления.
Все другие сигналы отправляются в программу; это может обработать их однако, это выбирает, или если это игнорирует сигнал затем, поведение по умолчанию сопровождается.
Вот несколько полезных сигналов, что можно отправить в процесс:
kill
и killall
. cat /etc/passwd | head -n1
отправит SIGPIPE в эти cat
процесс после того, как первая строка будет распечатана, заставляя cat
завершаться прежде, чем закончить целый файл. , В то время как все эти сигналы происходят "естественно" в их собственной установке, можно использовать сигнал фальсифицировать условие достигнуть желаемого результата.
, Например, если Вы хотите завершить чью-то сессию SSH, можно просто уничтожить процесс, но путем выполнения, таким образом, Вы будете препятствовать тому, чтобы он обновил свой файл ИСТОРИИ, который может быть важен для соображений безопасности. Но вместо этого при отправке его SIGHUP затем процесс предположит, что соединение умерло и выполнит свою стандартную очистку.