Linux

Commande kill Linux : fermer un programme qui ne répond plus en ligne de commande

Par Julien Roland , le 27/04/2026 , mis à jour le 27/04/2026 - 13 minutes de lecture
Utilisation de la commande kill -9 avec le PID pour forcer la fermeture d'un programme bloqué sous Linux

La gestion des processus dans un système d’exploitation est un vaste sujet, faisant l’objet de milliers de pages dans la littérature technique. Par ailleurs, c’est un sujet qui est orienté vers un public très expert. Aussi, il ne sera pas question ici de faire un exposé dessus, mais seulement de montrer très rapidement, par l’exemple, comment fermer un programme qui ne répond plus sous Linux en ligne de commande. Cet article complète celui consacré aux méthodes pour fermer un programme récalcitrant rédigé précédemment par Steve.
La commande qui sera exposée ici est la commande kill. que vous pourrez utiliser avec toutes les distributions Linux.

📌 L’essentiel à retenir

La commande kill envoie un signal à un processus identifié par son PID. Par défaut, elle envoie SIGTERM (signal 15) qui demande au programme de se fermer proprement. Si le programme est totalement bloqué, on utilise kill -9 (signal SIGKILL) qui force la fermeture via le noyau Linux. Pour cibler un programme par son nom plutôt que par son PID, la commande killall fait le même travail mais sur tous les processus portant ce nom.

Pourquoi utiliser la ligne de commande pour fermer un programme

Quand un logiciel se fige sous Linux, l’environnement graphique ne répond pas toujours au clic sur la croix de fermeture. Le terminal, lui, reste opérationnel : il dialogue directement avec le noyau, indépendamment de l’interface graphique. La commande kill contourne donc le bureau bloqué et permet de récupérer la main sans redémarrer la session.

Cette approche s’avère utile sur un poste local, mais elle devient indispensable sur un serveur distant accessible uniquement en SSH, où aucune interface graphique n’est disponible. Maîtriser kill et killall fait partie des bases pour qui administre une machine Linux.

À quoi sert vraiment la commande kill sous Linux

En effet, bien qu’elle soit utilisée également (et principalement) pour ça comme nous le verrons plus loin, la commande kill ne sert pas uniquement à fermer autoritairement un processus récalcitrant. Elle sait faire bien plus.
En fait, la fonction de base de la commande kill est d’envoyer un message (un signal) à un processus en cours d’exécution. Ces signaux peuvent être de différentes natures, et on peut même en créer des personnalisés. La variété des signaux existants de base suffit à montrer la complexité du sujet, mais on pourra évoquer parmi ceux-ci la mise en pause et en arrière plan d’un process (signal 19 = SIGSTOP ainsi que le raccourci clavier CTRL + Z).

Fermer un processus avec kill : les deux modes

Sinon, il est probable qu’on aurait choisi un autre nom de commande. Dans la pratique, on distingue deux cas de figure : la fermeture polie (le programme coopère) et la fermeture autoritaire (le noyau prend la main).

De manière polie

Comme on le sait à présent, kill envoie un signal à un processus. Le signal par défaut envoyé par kill est le signal 15, ou SIGTERM. Celui-ci demande au processus de se terminer proprement, c’est-à-dire de prendre le temps de finir le traitement en cours et de libérer lui-même les ressources utilisées avant d’invoquer l’arrêt (c’est un peu plus complexe que cela en réalité, car entre autres le processus parent du processus à fermer joue un rôle dans la procédure). C’est ce signal qui est envoyé par exemple quand on clique sur la petite croix pour fermer la fenêtre d’un logiciel, ou qu’on invoque la commande kill sans préciser le signal à envoyer. Il est à noter qu’un processus peut faire le choix d’ignorer ce signal, même s’il n’est pas planté.

Fermeture autoritaire avec kill -9 (signal SIGKILL)

Il y a des cas où un programme ou un processus ne répond plus aux commandes de contrôle que le système d’exploitation lui envoie. On dit couramment qu’il est « planté ». Dans ces cas là, on invoquera le signal 9 (SIGKILL) de la commande kill. Cette fois-ci, ce n’est pas le processus lui-même qui recevra le signal (il ne peut pas de toute façon car il est planté), mais c’est l’ordonnanceur du noyau Linux qui le recevra. Ce faisant, c’est lui-même qui prendra en charge la terminaison du programme ne répondant plus, de manière administrative et autoritaire. Les ressources système consommées par le processus planté seront alors libérées sans précautions (par exemple des données en mémoire ne seront pas consolidées dans le disque dur).

Quelques exemples

Exemples de kill avec le PID du processus

La commande kill nécessite qu’on lui précise le PID du processus à terminer (le PID = Process IDentifier, est le numéro de processus que l’ordonnanceur du noyau lui a assigné). On peut obtenir ce PID en saisissant la commande ps qui liste les processus en cours, en filtrant (à l’aide de la commande grep) par le nom du programme exécuté.

ps aux | grep -v grep| grep thunderbird

la commande ps aux
La commande ps, avec les options « aux » qui permet de lister les processus en cours d’exécution. Ici on a filtré sur le nom thunderbird avec la commande grep.

Le PID du processus est affiché sur la 2e colonne. Dans notre exemple, il a pour valeur 2337.
Pour terminer proprement le processus, on saisira la commande suivante :

kill 2337

Toutefois, si on en est là, c’est probablement que notre programme (ici Thunderbird) ne répond plus, et que nous n’arrivons pas à le fermer en cliquant sur la croix de sa fenêtre. Dans ce cas, on saisira la commande suivante :

kill -9 2337

la commande kill
Envoi du signal SIGKILL (-9) avec la commande kill pour terminer autoritairement un processus qui ne répond plus.

Cette commande envoie le signal SIGKILL qui demandera à l’ordonnanceur du noyau Linux de terminer le programme récalcitrant.

La commande killall : tuer un programme par son nom

La commande killall a pour objet d’envoyer un signal comme le fait kill, mais cette fois-ci elle ne vise pas un numéro de processus: elle cible tous les processus exécutant une commande donnée. En outre, on notera que comme pour la commande kill, on lui fournira un numéro de signal à envoyer.

killall thunderbird

La commande ci-dessus aura pour effet de terminer proprement tous les processus qui exécutent le programme thunderbird.

Si le programme récalcitre, on pourra comme avec kill envoyer le signal SIGKILL en saisissant la commande suivante :

killall -9 thunderbird
la commande killall
Envoi du signal SIGKILL (-9) avec la commande killall qui terminera autoritairement TOUS les processus exécutant la commande thunderbird.

Attention toutefois, même si la commande killall est pratique car il n’y a pas à déterminer le numéro du processus à killer, elle peut avoir des effets indésirables. En effet, son utilisation sera au prix du risque de terminer brutalement des processus qui eux n’étaient pas plantés, puisque killall envoie le signal à tous les processus exécutant un programme donné.
Ceci dit, dans notre exemple avec thunderbird, il n’y a pas de souci, car thunderbird est fait pour être exécuté par un seul processus. Ce n’est pas toujours le cas, notamment avec des programmes serveurs, qui peuvent être configurés pour multiplier les processus à mesure que la charge augmente.

Foire aux questions

Quelle est la différence entre kill et kill -9 sous Linux ?

La commande kill sans option envoie le signal SIGTERM (15) qui demande poliment au programme de se fermer. Le programme peut prendre le temps de sauvegarder ses données et libérer ses ressources. kill -9 envoie le signal SIGKILL qui contourne le programme : c’est le noyau Linux qui termine le processus de force, sans laisser au logiciel le temps de réagir.

Comment trouver le PID d’un processus sous Linux ?

La méthode classique consiste à enchaîner ps aux | grep -v grep | grep nom_du_programme dans un terminal. Le PID s’affiche dans la deuxième colonne du résultat. On peut aussi utiliser la commande pgrep nom_du_programme qui retourne directement la liste des PID, ou pidof nom_du_programme pour un résultat encore plus condensé.

Que faire si kill -9 ne fonctionne pas ?

Si kill -9 ne termine pas un processus, c’est généralement qu’il est bloqué en état D (uninterruptible sleep), souvent à cause d’une opération disque ou réseau impossible à interrompre. Dans ce cas, il faut soit attendre la fin de l’opération système, soit redémarrer la machine. Aucun signal ne peut interrompre un processus dans cet état, par conception du noyau Linux.

Quelle est la différence entre kill et killall ?

kill cible un seul processus identifié par son PID, alors que killall cible tous les processus exécutant un programme donné, par leur nom. Pratique pour fermer rapidement plusieurs instances, killall présente un risque : si plusieurs processus partagent le même nom et que vous n’en vouliez pas tous les tuer, ils seront tous fermés.

La commande kill fonctionne-t-elle sous macOS ?

Oui, kill et killall sont disponibles dans le terminal de macOS, qui est basé sur Unix comme Linux. La syntaxe est identique : kill PID, kill -9 PID, killall nom_du_programme. Les signaux SIGTERM et SIGKILL fonctionnent de la même façon. Sous Windows, il faut utiliser la commande taskkill dans l’invite de commandes ou PowerShell.

Faut-il être administrateur (root) pour utiliser kill ?

Non, vous pouvez utiliser kill sans privilège particulier sur les processus que vous avez vous-même lancés. En revanche, pour terminer un processus appartenant à un autre utilisateur ou un service système, il faut passer par sudo kill ou sudo kill -9. Sans cela, le système renverra une erreur de permission refusée.

Lister les signaux disponibles avec kill -l

Pour voir la liste complète des signaux que la commande kill peut envoyer, tapez kill -l dans un terminal. Vous obtiendrez une liste numérotée d’une soixantaine de signaux, chacun ayant un usage précis. Les plus utiles au quotidien sont :

  • SIGHUP (1) : demande à un processus de relire sa configuration sans redémarrer (utile pour les démons comme nginx ou apache).
  • SIGINT (2) : équivalent du CTRL + C dans un terminal, demande l’interruption.
  • SIGTERM (15) : signal par défaut de kill, demande une fermeture propre.
  • SIGKILL (9) : termine le processus de force, ne peut pas être ignoré.
  • SIGSTOP (19) : met le processus en pause, peut être repris avec SIGCONT (18).

La syntaxe kill -nom PID fonctionne aussi : kill -SIGTERM 2337 est strictement équivalent à kill -15 2337 ou kill 2337.

Tux, la mascotte du noyau Linux. (c) Larry Ewing

Julien Roland

Technicien systèmes et réseaux depuis plus de 15 ans, je travaille au sein des infrastructures informatiques d'une entité de plusieurs milliers d'utilisateurs. Convaincu du fait qu'il existe des produits d'excellence à la fois issus du monde propriétaire et du monde open source, j'aime butiner dans les deux. Cependant j'ai une appétence particulière pour les logiciels libres de par leur esprit d'universalité et de partage. Mes contributions passent par le partage et la transmission des mes connaissances et expériences, mais aussi par l'aide et le conseil que je peux apporter autour de moi.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.