Comment tuer un processus sous Linux
Il nous est tous arrivé de constater que notre ordinateur ralentit considérablement, voire qu'il peine à exécuter les tâches les plus élémentaires. Sous Windows, le Gestionnaire des tâches est notre unique recours pour identifier et arrêter les processus gourmands en ressources, même s'ils ne sont pas essentiels. Cependant, sous Linux, un éventail d'outils en ligne de commande et d'interfaces graphiques nous offre un contrôle bien plus précis sur la gestion des processus. Cet article explore différentes méthodes, à la fois en ligne de commande (CLI) et en interface graphique, pour mettre fin à un processus sous Linux.
Arrêter un processus sous Linux (2023)
Avant d'explorer les arcanes de la gestion des processus sous Linux, il est primordial de comprendre ce qu'est exactement un processus et ce que représente son identifiant (PID) dans ce système d'exploitation.
Définition des processus sous Linux
Sous Linux, chaque instance d'exécution d'un programme est qualifiée de "processus", tandis que le fichier exécutable lui-même est appelé programme. Lorsqu'un programme est lancé, un processus est créé, auquel est attribué un identifiant unique à 5 chiffres, le "Process ID" ou PID. Lorsque le processus a terminé son exécution ou est arrêté de manière forcée, son PID est réattribué au processus suivant.
Mettre fin à un processus via la ligne de commande sous Linux
L'utilisation du terminal peut parfois paraître intimidante, comparée aux outils graphiques pour les tâches de base. Cependant, la gestion des processus devient bien plus aisée une fois les commandes et leurs options assimilées.
Signaux de terminaison
Lorsqu'un processus est arrêté, que ce soit via l'interface graphique ou la ligne de commande sous Linux, le noyau envoie un signal de terminaison au processus ciblé. Le processus réagit alors en fonction du signal reçu. Chaque signal possède un numéro spécifique, permettant au programme de l'interpréter rapidement. Parmi les différents signaux de terminaison, voici les principaux :
SignalValeur numériqueDescriptionSIGHUP1Signifie "Signal de raccrochage".
Envoyé lors de la fermeture d'un terminal.SIGINT2Signifie "Signal d'interruption".
Envoyé lorsque l'utilisateur met fin au processus.SIGKILL9Signifie "Signal de mise à mort".
Envoyé pour forcer l'arrêt immédiat d'un processus.SIGTERM15Signifie "Signal de terminaison".
Envoyé pour demander l'arrêt d'un processus et la libération des ressources.SIGSTOP19 – pour ARM, x86
17 – pour ALPHA
23 – pour MIPS
24 – pour PA-RISCSignifie "Signal d'arrêt".
Envoyé pour suspendre un processus et le reprendre ultérieurement.Les signaux les plus couramment utilisés sont SIGKILL (9) et SIGTERM (15).
Identifier les identifiants de processus
Avant d'interrompre un processus, il est nécessaire de connaître certains détails tels que son PID, son temps d'exécution, etc. Pour obtenir ces informations, on utilise la commande `ps` :
ps
La commande `ps` peut afficher une longue liste de processus. Pour affiner la recherche, il est possible de la combiner avec la commande `grep` dans un pipeline :
ps | grep <nom_du_processus>
Pour plus de simplicité, la commande `pidof` permet d'afficher directement l'identifiant d'un processus en cours d'exécution :
pidof <nom_du_processus>
Arrêter un processus avec la commande `kill`
Une fois l'identifiant du processus cible obtenu, la commande `kill` est la plus utilisée pour terminer un programme sous Linux. Sa syntaxe est la suivante :
kill <signal> <process_id>
Le paramètre `<signal>` est optionnel. Par défaut, la commande `kill` envoie le signal SIGTERM (15). Il est possible de spécifier un autre signal en utilisant sa valeur numérique ou son nom (voir tableau ci-dessus).

Arrêter un processus avec la commande `pkill`
Si la recherche de l'identifiant du processus est jugée fastidieuse, la commande `pkill` peut être utilisée. Elle permet de rechercher et d'arrêter les processus correspondant à un motif. Voici sa syntaxe :
pkill <options> <motif>
Voici quelques options courantes pour la commande `pkill` :
OptionDescription-nSélectionne uniquement le dernier processus correspondant au critère.-uSélectionne les processus appartenant à un utilisateur spécifique.-xSélectionne les processus correspondant exactement au motif.
Ceci est particulièrement utile lorsqu'il y a plusieurs utilisateurs travaillant sur différentes instances du même programme et que l'une d'elles commence à dysfonctionner. Par exemple, l'image ci-dessous montre comment supprimer l'instance "gedit" appartenant à l'utilisateur "intel" avec la commande `pkill` sous Linux :
pkill -u intel gedit

Arrêter un processus avec la commande `killall`
La commande `killall` fonctionne de façon similaire à `kill`, mais elle termine tous les processus correspondant à un nom, quel que soit l'utilisateur. Par défaut, elle envoie le signal SIGTERM si aucun autre n'est spécifié. Il est important de noter que `killall` ne peut pas s'arrêter elle-même, mais elle peut mettre fin à d'autres instances de la même commande. Voici la syntaxe de `killall` :
killall <options> <nom_du_processus>
Voici quelques options possibles :
OptionDescription-rInterprète le `nom_du_processus` comme une expression régulière et arrête les processus correspondants.-uArrête les processus appartenant à un propriétaire spécifique.-oArrête les processus plus anciens (démarrés avant) une heure donnée.-yArrête les processus plus récents (démarrés après) une heure donnée.
`killall` peut être utile pour arrêter une série de processus identiques ou tous les processus appartenant à un utilisateur spécifique. Par exemple, nous arrêtons tous les processus "sleep 500" à l'aide de la commande `killall` sous Linux :
killall -v sleep

Arrêter un processus Linux avec les commandes `top` et `htop`
Ces méthodes sont utiles lorsque l'on ignore quels sont les processus les plus gourmands en ressources. Ces deux commandes permettent d'examiner tous les processus en cours d'exécution, y compris les processus zombies, et de les arrêter rapidement. Pour utiliser `top`, voici la syntaxe dans le terminal :
top
Comprendre l'affichage :
L'affichage principal de `top` est divisé en colonnes :
| PID | Affiche l'identifiant du processus |
| USER | Affiche le propriétaire du processus |
| PR | Affiche la priorité du processus (attribuée par le système d'exploitation) |
| NI | Affiche la priorité "nice" (priorité attribuée par l'utilisateur) |
| VIRT | Affiche la quantité de mémoire virtuelle utilisée |
| RES | Affiche la quantité de mémoire physique utilisée |
| SHR | Affiche la quantité de mémoire partagée avec d'autres processus |
| S | Affiche l'état actuel du processus :
|
| %CPU | Affiche le pourcentage de CPU utilisé par le processus |
| %MEM | Affiche le pourcentage de RAM utilisé par le processus |
| TIME+ | Affiche le temps d'exécution total du processus |
| COMMAND | Affiche la commande ayant lancé le processus |
Pour arrêter un processus, parcourez la liste avec les flèches du clavier ou recherchez le nom du processus. Pour rechercher un nom, tapez 'L', puis le nom du processus. Une fois trouvé, tapez 'k' pour arrêter le processus, entrez le PID (ou laissez celui en surbrillance), puis le signal de terminaison, et validez avec 'Entrée'. Pour revenir au terminal, tapez 'q'.
Bien que `top` fournisse des informations détaillées, son utilisation peut être délicate pour les débutants car il ne montre pas les correspondances de touches ou les étapes pour l'utiliser. La commande `htop`, quant à elle, possède une interface plus conviviale, même pour un outil en ligne de commande. De plus, elle affiche toutes les informations dans des vues distinctes. `htop` n'est généralement pas préinstallé, il faut l'installer avec cette commande :
sudo apt install -y htop
Pour utiliser `htop`, lancez la commande suivante :
htop
Pour arrêter un programme, sélectionnez-le, tapez 'F9', puis 'Entrée'. Pour rechercher un processus, tapez 'F3', puis le nom du processus, puis 'Entrée'. Le nom du processus sera mis en surbrillance. Appuyez ensuite sur 'F9' puis 'Entrée' pour mettre fin au processus.
Arrêter un processus via le moniteur système sous Linux
Si l'utilisation de la ligne de commande vous semble compliquée, vous pouvez utiliser l'outil de surveillance système intégré à chaque distribution Linux. Pour cela, ouvrez le moniteur système dans le menu des applications et suivez les étapes ci-dessous.
1. Une fois l'outil ouvert, vous verrez trois onglets en haut : "Processus", "Ressources" et "Système de fichiers". Pour gérer vos processus, rendez-vous sur l'onglet "Processus". Vous y verrez tous les processus en cours d'exécution. Appuyez sur 'CTRL+F' pour rechercher un processus par son nom. Cliquez sur le processus que vous souhaitez arrêter, puis sur le bouton "Terminer le processus".

2. Une fenêtre de confirmation s'affichera pour confirmer l'arrêt du processus. Cliquez sur le bouton rouge "Terminer le processus" pour mettre fin au processus sous Linux.

Questions fréquentes
Comment arrêter tous les processus sous Linux ?
Pour arrêter tous les processus d'un utilisateur donné (à l'exception du shell de connexion, du processus init et des processus du noyau), utilisez la commande `pkill` ou `killall` selon la syntaxe suivante :
pkill -u <nom d'utilisateur>
killall -u <nom d'utilisateur>
Pour arrêter tous les processus pour tous les utilisateurs, y compris le système d'initialisation, appuyez simultanément sur les touches "ALT + Impr écran + o".
Est-il risqué d'arrêter un processus ?
La fermeture d'un processus non essentiel ou d'un processus utilisateur gourmand en mémoire libère des ressources pour d'autres processus. Cependant, assurez-vous de ne pas arrêter un processus essentiel au système d'exploitation.
Que sont les processus d'arrière-plan sous Linux ?
Sous Linux, les processus d'arrière-plan s'exécutent sans instance de shell et sans intervention de l'utilisateur. Ils peuvent être visualisés avec les commandes `top`, `htop`, `ps`, etc.
Qu'est-ce qu'un processus zombie ?
Un processus "zombie" est un processus arrêté par l'utilisateur, mais qui occupe toujours de la mémoire.
Que fait CTRL + Z sous Linux ?
Sous Linux, la combinaison "CTRL + Z" envoie le signal SIGTSTP qui suspend le processus et l'envoie à l'arrière-plan. Un processus suspendu en arrière-plan ne peut être arrêté tant qu'il n'est pas ramené au premier plan.
Arrêter facilement les processus sous Linux
Savoir comment arrêter les processus qui accaparent la mémoire est une compétence importante. Cet article a exploré des méthodes en ligne de commande (avec `killall`, `pkill`, etc.) et des méthodes graphiques pour arrêter les processus sous Linux. Nous avons également expliqué comment utiliser les outils `top` et `htop` pour gérer les processus sur votre ordinateur Linux. Si vous rencontrez des difficultés avec ces outils, n'hésitez pas à nous en faire part dans les commentaires.

