unix - comando - kill command
¿Por qué el número 9 en el comando kill-9 en Unix? (13)
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?
¿por qué kill -9: el número 9 en la lista de señales ha sido elegido para ser SIGKILL en referencia a "matar a las 9 vidas de un gato".
Ambos son lo mismo que kill -sigkill processID, kill -9 processID. Es básicamente para la terminación forzada del proceso.
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 con la interfaz de programación de Linux (p 388) :
Cada señal se define como un entero único (pequeño), comenzando en forma secuencial desde 1. Estos números enteros se definen con nombres simbólicos de la forma SIGxxxx. Dado que los números reales utilizados para cada señal varían según las implementaciones , son estos nombres simbólicos los que siempre se usan en los programas.
El -9
es el signal_number y especifica que el mensaje de kill enviado debe ser del tipo KILL (no capturable, no ignorable).
kill -9 pid
Que es lo mismo que a continuación.
kill -SIGKILL pid
Sin especificar un signal_number, el valor predeterminado es -15, que es TERM (señal de terminación de software). Escribir kill <pid>
es lo mismo que kill -15 <pid>
.
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.
Escriba el comando kill -l en su caparazón
lo encontrarás en el noveno número [ 9) SIGKILL ], así que uno puede usar kill -9 o kill -SIGKILL
SIGKILL es una señal de muerte segura, no puede desubicarse, ignorarse ni manipularse. Siempre funciona con su comportamiento predeterminado, que es matar el proceso.
Hay una lista muy larga de señales de 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
obliga al proceso 12345 a pausar su ejecución, mientras que kill -SIGCONT 12345
le indica que reanude. Una versión ligeramente menos críptica de kill -9
es kill -SIGKILL
.
Hubo otras 8 señales que se les ocurrieron primero.
Primero necesitas saber qué son las señales en los sistemas tipo Unix (te llevará solo unos minutos).
Señales , son interrupciones de software enviadas a un programa (en ejecución) para indicar que ha ocurrido un evento importante.
Los eventos pueden variar de las solicitudes de los usuarios a los errores de acceso a memoria ilegales. Algunas señales, como la señal de interrupción, indican que un usuario le ha pedido al programa que haga algo que no está en el flujo de control habitual.
Hay varios tipos de señales que podemos usar: para obtener una lista completa de todas las señales disponibles / posibles, use el comando " $ kill -l ":
En la salida anterior, es claramente visible, que cada señal tiene un '' número de señal '' (por ejemplo, 1, 2, 3) y un '' nombre de señal '' (por ejemplo, SIGUP, SIGINT, SIGQUIT) asociado a él. Para una vista detallada de lo que hace cada Señal, visite este link .
Finalmente, llegando a la pregunta "¿Por qué el número 9 en kill -9 comando":
Hay varios métodos para entregar señales a un programa o script. Uno de los métodos comúnmente utilizados para enviar señales es usar el comando kill , la sintaxis básica es:
$ kill -signal pid
Donde la señal es el número o nombre de la señal, seguido del 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, arriba hemos usado el ''nombre de señal'', y luego hemos usado ''número de señal''.
Veredicto : Uno tiene una opción abierta para usar el ''nombre de señal'' o el ''número de señal'' con el comando kill .
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>**
Vea el artículo de Wikipedia sobre 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
hay algún proceso que no se puede matar así "kill% 1". si tenemos que terminar ese proceso, se usa un comando especial para matar ese proceso que es kill -9. por ejemplo, abra vim y detenga si usa ctrl + z luego vea trabajos y luego de aplicar el proceso de eliminación de este proceso no terminará, así que aquí usamos el comando kill -9 para terminar.