kill

La commande kill permet d'envoyer un signal à un processus.

Le signal envoyé par défaut est le signal TERM qui tente de fermer le processus. Ce comportement fait que kill est souvent associé au fait de terminer des processus, mais la commande peut faire plus que ça.

Fermer un processus

Pour forcer un processus à se terminer, on peut envoyer le signal TERM à l'aide de la commande kill. Ce signal est passé au processus et le comportement par défaut est de terminer le processus à la réception du signal.

Le signal TERM (SIGTERM) est celui envoyé par défaut par kill, il suffit donc de donner le numéro de processus (son PID) à fermer après le nom de la commande.

Voici par exemple comment fermer le processus 17041 (si on a les droits suffisant pour le faire):

$ pidof vsftpd
17041
$ kill 17041

Forcer la fermeture d'un processus

Un processus peut intercepter le signal TERM décrit précédemment. Ceci est utile dans certains cas d'utilisation de programmes, mais cela empêche de ferme le processus par ce biais.

Pour forcer la fermeture d'un processus, on peut utiliser le signal "KILL" (SIGKILL). Ce signal ferme le processus, et ne peut être intercepté par ce dernier.

Voici un exemple d'utilisation du signal SIGKILL pour fermer un processus. Le signal à le numéro 9 comme vous pourrez le voir à la section suivante.

$ pidof watch
20323 20156
$ kill -9 20323 20156

Les autres signaux signaux

Pour envoyer un signal à l'aide de kill, il suffit de passer en option le numéro ou le nom du signal précédé d'un tiret.

Pour obtenir la liste des signaux, il faut utiliser l'option -l de kill:

$ 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

La signification exacte de chacun des signaux peut être trouvé sur la page de manuel "signal".

Dans certains applications, certains signaux sont utilisé à des fins différentes que leur signification initiale. Par exemple, lorsque le serveur Bind (serveur DNS) reçoit le signal "HUP", il relit le fichier de configuration et recharge la base de donnée

Voici par exemple comment recharger la configuration de Bind 8 sans redémarrer tout le serveur:

$ pidof bind
20156
$ kill -HUP 20156

killall

Sous Linux, il existe une variante de la commande kill qui permet de spécifier les processus par leur nom plutôt que par leur numéro. Cette variante s'appelle killall et est décrite dans une autre page.

Page de manuel

La page de manuel de kill détaille les options de la commande. Les options les plus utilisés ont été vue ici.

Notez que la version de Debian (ou Ubuntu) de la page de manuel est plus complète que les autres version. Toutes les versions sont accessible via la page de manuel de kill sur ce site.

Pour connaître la signification des signaux, il existe une page de manuel signal dans la section 7.