Почему номер 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
Я думаю, что лучший ответ Вот это:
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 команда" :
на приведенном выше выходе хорошо видно, что каждый сигнал имеет 'номер сигнала' (например, 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.
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