Parfois, lorsque vous travaillez sur une machine Linux, vous verrez qu'une application ou un processus de ligne de commande se bloque (ne répond plus). Dans ces cas, y mettre fin est la seule issue. La ligne de commande Linux propose un utilitaire que vous pouvez utiliser dans ces scénarios. Ça s'appelle tuer .
Dans ce didacticiel, nous aborderons les bases de kill à l'aide d'exemples faciles à comprendre. Mais avant cela, il convient de mentionner que tous les exemples de l'article ont été testés sur une machine Ubuntu 16.04.
Commande kill Linux
La commande kill est généralement utilisée pour tuer un processus. En interne, il envoie un signal, et selon ce que vous voulez faire, il existe différents signaux que vous pouvez envoyer à l'aide de cet outil. Voici la syntaxe de la commande :
kill [options] <pid> [...]
Et voici comment la page de manuel de l'outil le décrit :
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 or -KILL. Negative PID values may be used to choose whole process groups; see the PGID
column in ps command output. A PID of -1 is special; it indicates all processes except the kill
process itself and init.
Les exemples de style Q&A suivants devraient vous donner une meilleure idée du fonctionnement de la commande kill.
Q1. Comment terminer un processus en utilisant la commande kill ?
C'est très simple - tout ce que vous avez à faire est d'obtenir le pid du processus que vous voulez tuer, puis de le transmettre à la commande kill.
kill [pid]
Par exemple, je voulais tuer le processus 'gthumb' sur mon système. J'ai donc d'abord utilisé la commande ps pour récupérer le pid de l'application, puis je l'ai passé à la commande kill pour y mettre fin. Voici la capture d'écran montrant tout cela :
Q2. Comment envoyer un signal personnalisé ?
Comme déjà mentionné dans la section d'introduction, TERM est le signal par défaut que kill envoie à l'application/au processus en question. Cependant, si vous le souhaitez, vous pouvez envoyer tout autre signal pris en charge par kill en utilisant le -s option de ligne de commande.
kill -s [signal] [pid]
Par exemple, si un processus ne répond pas au signal TERM (ce qui permet au processus de faire un nettoyage final avant de quitter), vous pouvez opter pour le signal KILL (qui ne laisse pas le processus faire de nettoyage). Voici la commande que vous devez exécuter dans ce cas.
kill -s KILL [pid]
Q3. Quels sont tous les signaux que vous pouvez envoyer en utilisant kill ?
Bien sûr, la prochaine question logique qui vous viendra à l'esprit est de savoir comment savoir quels signaux vous pouvez envoyer en utilisant kill. Eh bien, heureusement, il existe une option de ligne de commande -l qui répertorie tous les signaux pris en charge.
kill -l
Voici la sortie de la commande ci-dessus produite sur notre système :
Q4. Quels sont les autres moyens par lesquels le signal peut être envoyé ?
Dans l'un des exemples précédents, nous vous avons indiqué si vous souhaitez envoyer le signal KILL, vous pouvez le faire de la manière suivante :
kill -s KILL [pid]
Cependant, il existe également quelques autres alternatives :
kill -s SIGKILL [pid]
kill -s 9 [pid]
Le nombre correspondant peut être connu en utilisant l'option -l dont nous avons déjà parlé dans l'exemple précédent.
Q5. Comment tuer tous les processus en cours d'exécution en une seule fois ?
Dans le cas où un utilisateur souhaite tuer tous les processus qu'il peut (cela dépend de son niveau de privilège), alors au lieu de spécifier un grand nombre d'ID de processus, il peut simplement passer l'option -1 pour tuer.
Par exemple :
kill -s KILL -1
Conclusion
La commande kill est assez simple à comprendre et à utiliser. Il y a une légère courbe d'apprentissage en termes de liste d'options de signal qu'elle offre, mais comme nous l'avons expliqué ici, il existe également une option pour jeter un coup d'œil rapide à cette liste. Pratiquez simplement tout ce dont nous avons discuté et vous devriez être prêt à partir. Pour plus d'informations, rendez-vous sur la page de manuel de l'outil.