Menu Fermer

Utiliser la commande Kill, Killall, pkill pour arrêter un processus sur Linux

Sur Linux, lorsqu’un processus a un comportement anormal comme une forte utilisation CPU ou de la mémoire, on peut chercher arrêter son fonctionnement.
Depuis un terminal, en ligne de commandes, on peut utiliser la commande Kill qui permet de tuer un processus.
Cela envoie un SIGTERM (signal de terminaison) au processus qui demande au processus de s’arrêter.
En déclinaison on trouve aussi les commandes killall et pkill pour arrêter un processus sur Linux.

Dans ce tutoriel, je vous explique comment utiliser la commande Kill, Killall, pkill sur Linux à travers plusieurs exemples.

Utiliser la commande Kill, Killall, pkill pour arrêter un processus sur Linux

Que sont les commandes Kill, Killall, pkill ?

La commande Kill est une utilitaire de ligne de commande pour envoyer un signal à un processus pour contrôler ce dernier.
C’est une commande natif à Linux et Unix est donc disponible sur toutes les distributions Linux.

Par défaut, la commande Kill enverra un signal à TERM à un processus permettant au processus d’exécuter des opérations de nettoyage avant de vous arrêter. La commande Kill prend également en charge l’envoi d’un autre signal à un processus.
En fait la commande Kill permet d’envoyer n’importe quel signal à un processus.
Ainsi, on peut aussi terminer, suspendre, reprendre ou redémarrer n’importe quel processus.

En résumé donc avec Kill, vous pouvez arrêter un processus en cours de fonctionnement.
pkill est très proche et permet aussi de “tuer un processus” mais propose plus d’options.
Enfin il existe même d’autres commandes comme xkill ou skill.

Comment trouver et arrêter un processus avec Kill

Pour tuer ou mettre fin à un processus, découvrez d’abord le numéro d’identifiant de processus ou le PID du processus à tuer, puis transmettez le numéro PID à la commande Kill.
Pour récupérer le PID d’un processus, vous pouvez utiliser la commande PS qui permet de lister les processus en cours d’exécution.

Dans l’exemple suivant, supposons que nous exécutions l’éditeur de texte vim et que nous souhaitons l’arrêter.
µPour trouver l’identifiant de processus, la commande PS est utilisée avec le grep pour trouver le PID :

ps -ef|grep vim

On voit que le processus vim a pour PID 632 (deuxième colonne).
Pour utiliser vim et arrêter son exécution :

kill 632
Comment tuer un processus avec Kill

Cela envoie un signal à TERM au processus indiquant qu’il devrait être terminé. Lorsqu’un processus reçoit le signal TERM, il agit comme une demande d’arrêter du processus en cours d’exécution.
Un processus UNIX peut recevoir TERM et effectuer des opérations de nettoyage avant son arrêt complet, telles que libérer des ressources, supprimer des fichiers temporaires, …

Notez que pour ‘aller plus vite pour récupérer le PID, on peut aussi utiliser la commande pgrep :

pgrep vim
pgrep - récupérer le PID d'un processus sur Linux

Ainsi en une seule commande :

kill `pgrep vim`

Mais pour aller encore plus vite et directement tuer un processus par nom, il existe aussi la commande pkill :

pkill vim

Comment gérer les erreurs «Operation not permitted»

Au moment de tuer un processus avec kill, vous pouvez rencontrer l’erreur “Operation not permitted”.
Cela vient tout simplement du fait que vous tentez d’arrêter un processus exécuté par l’utilisateur root avec un utilisateur standard.
Vous devez donc soit utiliser sudo, soit passer en root.

Erreurs «Operation not permitted» avec kill sur Linux

Comment tuer un processus avec Kill -9

Si un processus ne répond pas à un signal TERM, le signal KILL peut être utilisé.
Le signal KILL ne peut pas être ignoré par les processus UNIX et le processus est tué immédiatement.
Notez que cela n’autorise pas le processus d’exécution de nettoyage lors de la fermeture du processus.
Pour envoyer un KILL à un processus, on utilise l’option -s suivi du nom du signal.

kill -s KILL 632

Plus rapidement, on peut aussi utiliser cette syntaxe :

kill -s 9 632

Enfin plus communément utilisé et encore plus rapide :

kill -9 632

pkill : arrêter un processus

pkill s’utilise comme kill mais propose plus d’options.

Utilisez l’option -u pour dire à PKill à correspondre aux processus étant exécutés par un utilisateur donné:

pkill -u malekalmorte

Pour spécifier plusieurs utilisateurs, séparez leurs noms avec des virgules:

pkill -u malekalmorte,debian

Vous pouvez également combiner des options et des modèles de recherche. Par exemple, d’envoyer un signal de tuer tous les processus qui fonctionnent sous l’utilisateur “malekalmorte” et contiennent “Gnome” dans leurs noms que vous devez taper:

pkill -9 -u malekalmorte gnome

Pour afficher uniquement les processus les moins récemment (les plus anciens) ou les plus récents (les plus récents) ont commencé, utilisez l’option -N (pour la plus récente) ou l’option -O (pour la plus ancienne).
Par exemple, pour tuer le plus récemment créé screen :

pkill -9 -n screen

Killall, pkill : arrêter plusieurs processus en une fois

La commande killall permet de tuer plusieurs processus en une seule fois.
La syntaxe est la même simplement, on indique le nom du processus.

Par exemple pour arrêter tous les processus vim :

killall vim
killall -9 vim

Ci-desssous, la commande PS retourne 4 processus vim.
Après l’utilisation de killall, il n’en reste plus aucun.

Killall : tuer plusieurs processus en une fois

Pour le même but, on peut aussi la commande pkill qui propose deux options -e pour afficher le nombre de processus tuer et -c pour afficher le nombre de processus tués.

pkill : tuer plusieurs processus en une fois