Pregunta ¿Por qué el número 9 en el comando kill -9 en Unix?


Entiendo que no está relacionado con el tema, no pude encontrar nada en línea y pensé que tal vez los gurús de programación de la comunidad podrían saberlo.
Usualmente uso

kill -9 pid

para matar el trabajo. Siempre me pregunté el origen de 9. Lo busqué en línea, y dice

"9 Significa la señal KILL que no se puede capturar o ignorar. En otras palabras, indicará el proceso (alguna aplicación en ejecución) para salir inmediatamente" (fuente: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety)

Pero, ¿por qué 9? y ¿qué pasa con los otros números? ¿hay algún significado histórico o debido a la arquitectura de Unix?


75
2018-03-30 23:24


origen


Respuestas:


Ver el artículo de wikipedia sobre las señales de Unix para la lista de otras señales. SIGKILL acaba de obtener el número 9.

También puedes usar los mnemónicos, como los números:

kill -SIGKILL pid

73
2018-03-30 23:27



Hubo otras 8 señales que se les ocurrieron primero.


67
2018-03-30 23:26



Creo que una mejor respuesta aquí es simplemente esto:

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    

En cuanto al "significado" de 9 ... diría que probablemente no haya ninguno. De acuerdo a La interfaz de programación de Linux (p 388):

Cada señal se define como un entero único (pequeño), comenzando   secuencialmente a partir de 1. Estos enteros se definen con   nombres simbólicos del formulario SIGxxxx. Ya que los números reales utilizados para   cada señal varía según las implementaciones, son estos nombres simbólicos   que siempre se usan en los programas.


39
2017-11-13 00:59



Primero necesitas saber qué son Señales en sistemas tipo Unix (tomará solo unos minutos).

Señales, se envían interrupciones de software a un programa (en ejecución) para indicar que se ha producido un evento importante.

Los eventos pueden variar de las solicitudes de los usuarios al acceso a la memoria ilegal     errores Algunas señales, como la señal de interrupción, indican que un     el usuario ha pedido al programa que haga algo que no está en la forma habitual     flujo de control.

Hay varios tipos de señales que podemos usar, para obtener una lista completa de todas las señales disponibles / posibles de usar "$ kill -l"comando: enter image description here

En la salida anterior, es claramente visible, que cada señal tiene un 'número de señal'(por ejemplo, 1, 2, 3) y a'nombre de la señal'(por ejemplo, SIGUP, SIGINT, SIGQUIT) asociado a él. Para una vista detallada de lo que hace cada señal, visite este enlazar.

Finalmente, llegamos a la pregunta "¿Por qué el número 9 en matar -9 mando":

Hay varios métodos para entregar señales a un programa o script. Uno de los métodos más utilizados para enviar señales es utilizar el matar comando - la sintaxis básica es:

$ kill -signal pid

Donde la señal es la número o nombre de la señal, seguido por el proceso Id (pid) al que se enviará la señal.

Por ejemplo - -SIGKILL (o -9), la señal mata el proceso de inmediato.

$ kill -SIGKILL 1001

y

$ kill -9 1001

ambos comandos son una misma cosa, es decir, hemos usado el 'nombre de señal' y luego hemos usado 'número de señal'.

Veredicto: Uno tiene una opción abierta para si usar el 'nombre de señal' o el 'número de señal' con el matar mando.


25
2018-02-27 14:00



Es una referencia a "Revoulution 9" de los Beatles. Una colección de clips de sonido colgados y ruidos encontrados, esta grabación presenta a John Lennon repitiendo una y otra vez "Número 9, Número 9 ..." Además, esta canción llamó más la atención en 1969 cuando se descubrió que cuando se reproducía hacia atrás, John parecía estar diciendo "enciéndame, hombre muerto ..."

Por lo tanto, la novena señal estaba destinada a ser la más mortal de las señales de muerte.


17
2018-01-15 14:52



Hay una lista muy larga de señales Unix, que puedes ver en Wikipedia. De manera algo confusa, puedes usar kill para enviar cualquier señal a un proceso. Por ejemplo, kill -SIGSTOP 12345 fuerzas procesan 12345 para pausar su ejecución, mientras kill -SIGCONT 12345 le dice que reanude. Una versión un poco menos críptica de kill -9 es kill -SIGKILL.


7
2018-03-30 23:32



No creo que haya ningún significado para el número 9. Además, a pesar de la creencia común, kill se usa no solo para matar procesos sino también para enviar una señal a un proceso. Si eres realmente curioso, puedes leer aquí y aquí.


4
2018-03-30 23:32



SIGKILL usa para matar el proceso. SIGKILL no puede ser ignorado o manejado. En Linux, formas de dar SIGKILL.

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

1
2018-04-04 05:58



por qué matar -9: el número 9 en la lista de señales ha sido elegido para ser SIGKILL en referencia a "matar las 9 vidas de un gato".


1
2018-05-26 16:17



Ambos son lo mismo que kill -sigkill processID, kill -9 processID. Es básicamente para la terminación forzada del proceso.


0
2017-11-19 12:45