Почему номер 9 в команде kill -9 в unix?

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

kill -9 pid

для того чтобы убить работу. Я всегда задавался вопросом о происхождении 9. Я посмотрел его в интернете, и он говорит

" 9 означает сигнал убийства, который не улавливается или игнорируется. Другими словами, это означало бы, что процесс (некоторое запущенное приложение) немедленно прекратит работу" (источник: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety)

но, почему 9? а как насчет других номеров? есть ли какое-либо историческое значение или из-за архитектуры Unix?

13 ответов


посмотреть статья Википедии о сигналах Unix для списка других сигналов. Сигнал SIGKILL только что произошло, чтобы получить число 9.

вы можете также использовать мнемонику, как числа:

kill -SIGKILL pid

было 8 других сигналов, которые они придумали первыми.


Я думаю, что лучший ответ Вот это:

mike@sleepycat:~☺  kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP  
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    

Что касается" значимости " 9... Я бы сказал, что, вероятно, нет. Согласно интерфейс программирования Linux (p 388):

каждый сигнал определяется как уникальное (малое) целое число, начиная последовательно от 1. Эти числа определяются с символические имена формы SIGxxxx . С фактические номера, используемые для каждый сигнал различается реализации, это эти символические имена которые всегда используются в программах.


сначала вам нужно знать, что такое сигналы в Unix-подобных системах (это займет всего несколько минут).

сигналы, программные прерывания, отправленные в (запущенную) программу, чтобы указать, что произошло важное событие.

события могут варьироваться от запросов пользователей до незаконного доступа к памяти ошибки. Некоторые сигналы, такие как сигнал прерывания, указывают на то, что пользователь попросил программу сделать то, что не в обычном поток управления.

есть несколько типов сигналов, которые мы можем использовать - чтобы получить полный список всех доступных/возможных сигналов использования "$ kill-l команда" : enter image description here

В приведенном выше примере отчетливо видно, что каждый сигнал имеет 'номер сигнала' (например, 1, 2, 3) и a 'имя ' (например, SIGUP, SIGINT, SIGQUIT), связанные с ним. Для детального просмотра посмотрите, что каждый сигнал неужели, посетите это ссылке.

наконец, подходя к вопросу " почему номер 9 в убить -9 или имя сигнала, за которым следует идентификатор процесса (pid) для какой сигнал будет отправлен.

например -SIGKILL (или -9), сигнал сразу убивает процесс.

$ kill -SIGKILL 1001

и

$ kill -9 1001

обе команды - одно и то же, т. е. выше мы использовали "имя сигнала", а позже мы использовали "номер сигнала".

приговором: у вас есть открытый выбор, использовать ли "имя сигнала" или "номер сигнала" с убить


Это ссылка на" Revoulution 9 " Битлз. Коллекция нанизанных вместе звуковых клипов и найденных шумов, эта запись показывает, что Джон Леннон повторяет снова и снова "номер 9, номер 9... Далее, эта песня привлекла еще большее внимание в 1969 году, когда было обнаружено, что при воспроизведении задом наперед Джон, казалось, говорил: "заведи меня, мертвец..."

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


существует очень длинный список сигналов Unix, которые вы можете просмотреть Википедии. Несколько запутанно, вы можете использовать kill для отправки любого сигнала процессу. Например, kill -SIGSTOP 12345 заставляет процесс 12345 приостановить его выполнение, в то время как kill -SIGCONT 12345 говорит его возобновить. Чуть менее загадочная версия kill -9 is kill -SIGKILL.


Я не думаю, что есть любое значение числа 9. Кроме того, несмотря на распространенное мнение, kill используется не только для уничтожения процессов, но и для отправки сигнала процессу. Если вам действительно интересно, вы можете прочитать здесь и здесь.


SIGKILL использовать, чтобы убить процесс. SIGKILL нельзя игнорировать или обрабатывать. В Linux способы дать SIGKILL.

**kill -9 <process_pid> 
kill -SIGKILL <process_pid> 
killall -SIGKILL <process_name>
killall -9 <process_name>** 

зачем убивать -9 : число 9 в списке сигналов было выбрано как SIGKILL в отношении "убить 9 жизней кошки".


оба такие же, как kill-sigkill processID, kill -9 processID. Его в основном для принудительного прекращения процесса.


введите команду kill-l на вашей оболочке

вы найдете, что на 9-й номер [ 9) SIGKILL ], поэтому можно использовать либо убить -9, либо убить-SIGKILL

SIGKILL уверен, что сигнал убийства, он не может быть Dis-positioned, игнорировать или обрабатывать. Он всегда работает со своим поведением по умолчанию, которое должно убить процесс.


есть некоторый процесс, который нельзя убить, как это "убить %1". если мы должны прекратить этот процесс, поэтому специальная команда используется для убийства этого процесса, который является kill -9. например откройте vim и остановите, если с помощью ctrl+z затем см. задания и после применения процесса kill, чем этот процесс не будет завершен, поэтому здесь мы используем команду kill -9 для завершения.


на -9 - это signal_number и указывает, что отправленное сообщение об убийстве должно иметь тип KILL (non-catchable, non-ignorable).

kill -9 pid

, который так же, как ниже.

kill -SIGKILL pid

без указания signal_number значение по умолчанию -15, что является термином (сигнал завершения программного обеспечения). Набрав kill <pid> это то же самое, что kill -15 <pid>.