Страница Man Bash: убить <pid> против убить -9 <pid> </pid></pid>

27861
sixtyfootersdude

Моя справочная страница не документирует разницу между

kill <pid> 

а также

kill -9 <pid> 

Так как они делают разные вещи, почему -9 не задокументировано на killстранице руководства ? Я подумал, что, возможно, это были специфические вещи для оболочки, поэтому я тоже заглянул на страницу руководства bash, но не повезло.

Бонусный вопрос: что делает -9?

25

3 ответа на вопрос

39
Mark Pim

killпросто посылает сигнал данному процессу. Он -9сообщает, какой сигнал отправить.

Разные числа соответствуют разным общим сигналам. SIGINTнапример, равен 2, поэтому для отправки процесса SIGINTсигнал выдаст команду

$ kill -2 <pid> 

На странице руководства здесь указано:

Сигнал по умолчанию для kill - TERM.

Страница man также предоставляет таблицу сигналов, которые вы можете отправить. Согласно этой таблице, TERMявляется 15, таким образом, они эквивалентны:

kill <pid> kill -15 <pid> kill -TERM <pid> 

Уведомление 9 - это KILLсигнал.

 Name Number Action ----------------------- ALRM 14 exit HUP 1 exit INT 2 exit KILL 9 exit this signal may not be blocked PIPE 13 exit POLL exit PROF exit TERM 15 exit [Default] USR1 exit USR2 exit VTALRM exit STKFLT exit may not be implemented PWR ignore may exit on some systems WINCH ignore CHLD ignore URG ignore TSTP stop may interact with the shell TTIN stop may interact with the shell TTOU stop may interact with the shell STOP stop this signal may not be blocked CONT restart continue if stopped, otherwise ignore ABRT 6 core FPE 8 core ILL 4 core QUIT 3 core SEGV 11 core TRAP 5 core SYS core may not be implemented EMT core may not be implemented BUS core core dump may fail  XCPU core core dump may fail XFSZ core core dump may fail 
Сигнал по умолчанию (`kill `) СРОК. heavyd 14 лет назад 8
Числа обычно, но не всегда, одинаковы в разных системах на основе Unix. Лучше использовать название сигнала. То есть вместо kill -9 используйте kill -KILL. mpez0 14 лет назад 9
Я бы добавил, что сигналы `KILL` и` STOP` являются так называемыми неуловимыми сигналами. Это означает, что когда сигнал `TERM` отправляется процессу, он может его перехватить и выполнить различные операции« выключения », которые ему необходимо выполнить. Сигнал `KILL` немедленно останавливает процесс. Neo 14 лет назад 7
Лучше всего сначала использовать сигнал по умолчанию и использовать -9, только если сигнал по умолчанию не работает. Причина этого в том, что -9 не может быть пойман, поэтому у программы нет шансов выполнить какую-либо очистку. Также вы можете найти документацию для сигналов в вашей системе в `man 7 signal` Dennis Williamson 14 лет назад 5
7
Dennis Williamson

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

Указание -9 или KILL в качестве сигнала не позволяет программе перехватить его, выполнить очистку или игнорировать его. Это следует использовать только в качестве крайней меры.

Чтобы увидеть список чисел и имен сигналов в Bash, используйте kill -l(буква ell).

4
irfan

Я использую Ubuntu Linux.

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

Как объяснено выше со всеми вариантами уничтожения чисел, соответствующими его определению.

Я хотел бы добавить несколько строк к нему.

 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  

Как вы видите выше, это все варианты уничтожения, которые вы получите, запустив Ubuntu Linux.

Но определенные сигналы уничтожения являются общими для всех разновидностей * NIX.

kill -9 - это опция SIGKILL, и ядро ​​не может игнорировать этот сигнал, то есть имеет честь использовать эту опцию -9 или SIGKILL и немедленно завершить процесс. Помните, что этот процесс не может быть обработан прикладными программами.

kill -15, с другой стороны, отправит сигнал SIGTERM, что означает, что он будет ждать завершения процесса, прежде чем завершится. Это сигнал по умолчанию.

Похожие вопросы