Подтвердить что ты не робот

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

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

kill -9 pid

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

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

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

4b9b3361

Ответ 1

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

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

kill -SIGKILL pid

Ответ 2

Впервые появилось 8 других сигналов.

Ответ 3

Я думаю, что лучший ответ здесь просто:

[email protected]:~☺  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 (стр. 388):

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

Ответ 4

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

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

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

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

В приведенном выше выводе четко видно, что каждый сигнал имеет " номер сигнала" (например, 1, 2, 3) и " имя сигнала" (например, SIGUP, SIGINT, SIGQUIT). Подробную информацию о том, что делает каждый сигнал, см. В этой ссылке.

Наконец, придя к вопросу "Почему номер 9 в команде kill -9":

Существует несколько способов доставки сигналов программе или script. Одним из часто используемых методов отправки сигнала является использование команды kill - основной синтаксис:

$ kill -signal pid

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

Например - -SIGKILL (или -9), сигнал немедленно уничтожает процесс.

$ kill -SIGKILL 1001

и

$ kill -9 1001

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

Вердикт. У каждого есть открытый выбор: использовать ли "имя сигнала" или "номер сигнала" с помощью команды убить.

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

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

Ответ 10

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

Ответ 11

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

kill -9 pid

То же, что и ниже.

kill -SIGKILL pid

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