¿Es '-9' un comando de bandera para matar?

14

¿Qué -9hacer?

No aparece en la sintaxis:

$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$
Lazer
fuente
10
-9es una instancia de -sigspec, es equivalente a -s 9o -n 9o -s KILLo -KILL.
Gilles 'SO- deja de ser malvado'

Respuestas:

21

-9es el número de señal (en este caso SIGKILL), por lo que kill -9envía un SIGKILLal proceso en cuestión.

Esta señal hace que el proceso finalice inmediatamente (a menos que esté esperando en una función del núcleo). La señal no puede ignorarse ni el proceso de recepción puede realizar ninguna acción de limpieza después de recibir la señal (es decir, SIGKILLno se llama a un controlador de señal ). Ver también el artículo de Wikipedia sobre SIGKILL .

Desde la página de manual de mi killcomando (Linux):

   The  default  signal  for  kill is TERM. Use -l or -L to list available
   signals.  Particularly useful signals include  HUP,  INT,  KILL,  STOP,
   CONT,  and  0.   Alternate  signals  may be specified in three ways: -9
   -SIGKILL -KILL.

EDITAR : kill -l(el bashcomando incorporado) enumera los siguientes nombres de señal y valores numéricos en mi sistema:

 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
Andre Holzner
fuente
1
En Debian también se kill -lenumeran los valores numéricos. ¿Cuál es tu sistema operativo?
Faheem Mitha
interesante, estoy ejecutando Ubuntu (que está basado en Debian hasta donde yo sé). Por otro lado, acabo de notar que man killenumeramos valores numéricos para algunas de las señales.
Andre Holzner
Bueno, killestá en procps, que es la versión 1:3.2.8-9en Debian Squeeze. Y sí, Ubuntu es básicamente Debian. Así que me pregunto por qué kill -lno devuelve lo mismo.
Faheem Mitha
1
Resulta que estaba ejecutando zshel killcomando incorporado , no /bin/kill(que en realidad enumera los valores numéricos como usted dice)
Andre Holzner
55
@FaheemMitha Hay dos razones por las que los shells necesitan una función killintegrada. Permite que el killcomando acepte números o nombres de trabajo (por ejemplo kill %1). Y permite killsu uso incluso si se ha alcanzado algún límite de recuento de procesos.
Gilles 'SO- deja de ser malvado'
0

man signal

Le mostrará la asignación entre números de señal y nombres de señal.

David Paigen
fuente