'-9' è una bandiera per uccidere il comando?


Risposte:


21

-9è il numero del segnale (in questo caso SIGKILL), quindi kill -9invia un SIGKILLal processo in questione.

Questo segnale fa terminare immediatamente il processo (a meno che non stia aspettando una funzione del kernel). Il segnale non può essere ignorato né il processo di ricezione può eseguire alcuna azione di pulizia dopo aver ricevuto il segnale (ovvero SIGKILLnon viene chiamato un gestore di segnale per ). Vedi anche il articolo di Wikipedia su SIGKILL .

Dalla pagina man del mio 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.

EDIT : kill -l(il bashcomando integrato) elenca i seguenti nomi di segnale e valori numerici sul mio 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

1
Su Debian kill -lelenca anche i valori numerici. Qual è il tuo sistema operativo?
Faheem Mitha,

interessante, sto usando Ubuntu (che è basato su Debian per quanto ne so). D'altra parte, ho appena notato che man killelencano i valori numerici per alcuni dei segnali.
Andre Holzner,

Bene, killc'è procps, che è la versione 1:3.2.8-9in Debian Squeeze. E sì, Ubuntu è sostanzialmente Debian. Quindi mi chiedo perché kill -lnon ritorni la stessa cosa.
Faheem Mitha,

1
si scopre che stavo eseguendo zshil killcomando incorporato , non /bin/kill(che in realtà elenca i valori numerici come dici tu)
Andre Holzner,

5
@FaheemMitha Ci sono due ragioni per cui le shell hanno bisogno di un killbuilt-in. Consente al killcomando di accettare numeri o nomi di lavori (ad es kill %1.). E consente killdi essere utilizzato anche se è stato raggiunto un limite di conteggio dei processi.
Gilles 'SO- smetti di essere malvagio' il

0

man signal

Ti mostrerà la mappatura tra numeri di segnale e nomi di segnale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.