Почему номер 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?

1082   13  

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-подобных системах (это займет всего несколько минут).

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

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

есть несколько типов сигналов, которые мы можем использовать - чтобы получить полный список всех доступных/возможных сигналов использования " $ 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 " от The Beatles. Коллекция нанизанных вместе звуковых клипов и найденных шумов, эта запись показывает Джона Леннона, повторяющего снова и снова "номер 9, номер 9... Кроме того, эта песня привлекла дополнительное внимание в 1969 году, когда было обнаружено, что при воспроизведении назад Джон, казалось, говорил: "Включи меня, мертвец..."

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

есть очень длинный список сигналов Unix, которые вы можете просмотреть Википедии. Несколько запутанно, вы можете использовать kill для отправки любого сигнала в процесс. Например, kill -SIGSTOP 12345 заставляет процесс 12345 приостановить его выполнение, в то время как kill -SIGCONT 12345 говорит его возобновить. Чуть менее загадочная версия kill -9 - это 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 уверен, что сигнал убийства, он не может быть отключен, игнорировать или обрабатывать. Он всегда работает со своим поведением по умолчанию, которое должно убить процесс.

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

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

kill -9 pid

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

kill -SIGKILL pid

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

Comments

    Ничего не найдено.