Intéressé par en savoir plus sur l’administration Linux? Explorez ces cours de formation Linux.
- Introduction à Linux (LFS101x)– Gratuit
- Les bases de l’administration système Linux (LFS201)
Apprenez à tuer les processus errants dans ce tutoriel à partir de nos archives.
Imaginez ceci: Vous avez lancé une application (que ce soit à partir de votre menu de bureau préféré ou de la ligne de commande) et vous commencez à utiliser cette application lancée, seulement pour qu’elle se bloque sur vous, cesse de fonctionner ou meure de manière inattendue. Vous essayez de relancer l’application, mais il s’avère que l’original ne s’est jamais vraiment arrêté complètement.
Que faites-vous ? Vous tuez le processus. Mais comment ? Croyez-le ou non, votre meilleur pari réside le plus souvent dans la ligne de commande. Heureusement, Linux dispose de tous les outils nécessaires pour vous permettre, à vous, l’utilisateur, de tuer un processus erratique. Cependant, avant de lancer immédiatement cette commande pour tuer le processus, vous devez d’abord savoir ce qu’est le processus. Comment prenez-vous soin de cette tâche en couches? C’est en fait assez simpleonce une fois que vous connaissez les outils à votre disposition.
Permettez-moi de vous présenter lesdits outils.
Les étapes que je vais décrire fonctionneront sur presque toutes les distributions Linux, qu’il s’agisse d’un bureau ou d’un serveur. Je traiterai strictement de la ligne de commande, alors ouvrez votre terminal et préparez-vous à taper.
Localisation du processus
La première étape pour tuer le processus qui ne répond pas consiste à le localiser. Il y a deux commandes que j’utilise pour localiser un processus: top et ps. Top est un outil que chaque administrateur devrait connaître. Avec top, vous obtenez une liste complète des processus en cours d’exécution. À partir de la ligne de commande, émettez top pour voir une liste de vos processus en cours d’exécution (figure 1).
De cette liste, vous verrez des informations assez importantes. Disons, par exemple, que Chrome ne répond plus. Selon notre affichage supérieur, nous pouvons discerner qu’il existe quatre instances de chrome en cours d’exécution avec des ID de processus (PID) 3827, 3919, 10764 et 11679. Cette information sera importante à avoir avec une méthode particulière de tuer le processus.
Bien que top soit incroyablement pratique, ce n’est pas toujours le moyen le plus efficace d’obtenir les informations dont vous avez besoin. Disons que vous savez que le processus Chrome est ce dont vous avez besoin pour tuer, et que vous ne voulez pas avoir à parcourir les informations en temps réel offertes par top. Pour cela, vous pouvez utiliser la commande ps et filtrer la sortie via grep. La commande ps signale un instantané d’un processus en cours et grep imprime des lignes correspondant à un motif. La raison pour laquelle nous filtrons ps via grep est simple: Si vous émettez la commande ps par elle-même, vous obtiendrez une liste instantanée de tous les processus en cours. Nous voulons seulement que la liste soit associée à Chrome. Cette commande ressemblerait donc à :
ps aux | grep chrome
Les options auxiliaires sont les suivantes:
-
a= afficher les processus pour tous les utilisateurs
-
u = afficher l’utilisateur / propriétaire du processus
-
x = afficher également les processus non attachés à un terminal
L’option x est importante lorsque vous recherchez des informations concernant une application graphique.
Lorsque vous émettez la commande ci-dessus, vous recevrez plus d’informations que nécessaire (Figure 2) pour tuer un processus, mais c’est parfois plus efficace que d’utiliser top.
Tuer le processus
Maintenant, nous arrivons à la tâche de tuer le processus. Nous avons deux informations qui nous aideront à tuer le processus errant:
-
Nom du processus
-
ID du processus
Que vous utilisez déterminera la commande utilisée pour la terminaison. Il existe deux commandes utilisées pour tuer un processus :
-
kill – Tue un processus par ID
-
killall– Tue un processus par nom
Il existe également différents signaux qui peuvent être envoyés aux deux commandes kill. Le signal que vous envoyez sera déterminé par les résultats que vous souhaitez obtenir de la commande kill. Par exemple, vous pouvez envoyer le signal HUP (raccrocher) à la commande kill, qui redémarrera efficacement le processus. C’est toujours un choix judicieux lorsque vous avez besoin que le processus redémarre immédiatement (comme dans le cas d’un démon). Vous pouvez obtenir une liste de tous les signaux qui peuvent être envoyés à la commande kill en émettant kill-l. Vous trouverez un assez grand nombre de signaux (Figure 3).
Les signaux de mise à mort les plus courants sont:
Signal Name |
Single Value |
Effect |
SIGHUP |
Hangup |
|
SIGINT |
Interrupt from keyboard |
|
SIGKILL |
Kill signal |
|
SIGTERM |
Termination signal |
|
SIGSTOP |
17, 19, 23 |
Stop the process |
Ce qui est bien, c’est que vous pouvez utiliser la Valeur du Signal à la place du Nom du signal. Vous n’avez donc pas à mémoriser tous les noms des différents signaux.
Alors, utilisons maintenant la commande kill pour tuer notre instance de chrome. La structure de cette commande serait :
kill SIGNAL PID
Où SIGNAL est le signal à envoyer et PID est l’ID de processus à tuer. Nous savons déjà, grâce à notre commande ps, que les identifiants que nous voulons tuer sont 3827, 3919, 10764 et 11679. Donc, pour envoyer le signal d’arrêt, nous émettions les commandes:
kill -9 3827kill -9 3919kill -9 10764kill -9 11679
Une fois que nous aurons émis les commandes ci-dessus, tous les processus chrome auront été tués avec succès.
Prenons la route facile! Si nous savons déjà que le processus que nous voulons tuer s’appelle chrome, nous pouvons utiliser la commande killall et envoyer le même signal que le processus:
killall -9 chrome
La seule mise en garde à la commande ci-dessus est qu’elle peut ne pas attraper tous les processus chrome en cours d’exécution. Si, après avoir exécuté la commande ci-dessus, vous émettez la commande ps aux | grep chrome et voyez les processus restants s’exécuter, votre meilleur pari est de revenir à la commande kill et d’envoyer le signal 9 pour terminer le processus par PID.
Mettre fin aux processus en toute simplicité
Comme vous pouvez le voir, tuer des processus errants n’est pas aussi difficile que vous l’auriez pensé. Lorsque je me retrouve avec un processus têtu, j’ai tendance à commencer par la commande killall car c’est la voie la plus efficace pour terminer. Cependant, lorsque vous vous retrouvez avec un processus vraiment fougueux, la commande kill est la voie à suivre.
En savoir plus sur Linux grâce au cours gratuit « Introduction à Linux” de la Fondation Linux et d’edX.