'-9' est-il un drapeau pour tuer la commande?

14

Que fait -9-il?

Il n'apparaît pas dans la syntaxe:

$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$
Lazer
la source
10
-9est une instance de -sigspec, c'est équivalent à -s 9ou -n 9ou -s KILLou -KILL.
Gilles 'SO- arrête d'être méchant'

Réponses:

21

-9est le numéro du signal (dans ce cas SIGKILL), kill -9envoie donc un SIGKILLau processus en question.

Ce signal provoque l'arrêt immédiat du processus (sauf s'il attend dans une fonction du noyau). Le signal ne peut être ignoré ni le processus de réception ne peut effectuer aucune action de nettoyage après avoir reçu le signal (c'est-à-dire qu'un gestionnaire de signal pour SIGKILLn'est pas appelé). Voir aussi l'article Wikipedia sur SIGKILL .

Depuis la page de manuel de ma killcommande (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(la bashcommande intégrée) répertorie les noms de signaux et les valeurs numériques suivants sur mon système:

 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
la source
1
Sur Debian kill -lrépertorie également les valeurs numériques. Quel est votre OS?
Faheem Mitha
intéressant, je lance Ubuntu (qui est basé sur Debian pour autant que je sache). D'un autre côté, je viens de remarquer que la man killliste des valeurs numériques pour certains des signaux.
Andre Holzner
Eh bien, killc'est dans procps, qui est la version 1:3.2.8-9de Debian Squeeze. Et oui, Ubuntu est essentiellement Debian. Je me demande donc pourquoi kill -lne retourne pas la même chose.
Faheem Mitha
1
il s'avère que zshj'exécutais la killcommande intégrée de non, /bin/kill(qui répertorie en fait les valeurs numériques comme vous le dites)
Andre Holzner
5
@FaheemMitha Il y a deux raisons pour lesquelles les shells ont besoin d'un killintégré. Il permet à la killcommande d'accepter des numéros de travaux ou des noms (par exemple kill %1). Et il permet killd'être utilisé même si une certaine limite de nombre de processus a été atteinte.
Gilles 'SO- arrête d'être méchant'
0

man signal

Vous montrera la correspondance entre les numéros de signaux et les noms de signaux.

David Paigen
la source