Il s’agit d’un article classique de la Linux.com les archives. Pour plus d’excellents conseils et techniques sur SysAdmin, consultez notre cours d’introduction à Linux et notre L’essentiel de la formation en ligne sur l’administration système
Imaginez ceci : vous avez lancé une application (que ce soit à partir de votre menu de bureau préféré ou à partir de la ligne de commande) et vous commencez à utiliser cette application lancée, uniquement pour la voir se verrouiller sur vous, arrêter de fonctionner ou mourir de manière inattendue. Vous essayez à nouveau d’exécuter l’application, mais il s’avère que l’original ne s’est jamais complètement arrêté.
Que fais-tu? 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, en tant qu’utilisateur, de tuer un processus errant. Cependant, avant de lancer immédiatement cette commande pour tuer le processus, vous devez d’abord savoir quel est le processus. Comment vous occupez-vous de cette tâche en couches ? C’est en fait assez simple… une fois que vous connaissez les outils à votre disposition.
Permettez-moi de vous présenter ces outils.
Les étapes que je vais décrire fonctionneront sur presque toutes les distributions Linux, qu’il s’agisse d’un ordinateur de bureau ou d’un serveur. Je traiterai strictement avec la ligne de commande, alors ouvrez votre terminal et préparez-vous à taper.
Localiser le processus
La première étape pour tuer le processus qui ne répond pas est de le localiser. Il y a deux commandes que j’utilise pour localiser un processus : Haut et ps. Top est un outil que tout administrateur devrait connaître. Avec Haut, vous obtenez une liste complète des processus en cours d’exécution. A partir de la ligne de commande, lancez Haut pour voir une liste de vos processus en cours d’exécution (Figure 1).
Figure 1 : La commande du haut vous donne de nombreuses informations.
De cette liste, vous verrez des informations assez importantes. Disons, par exemple, que Chrome ne répond plus. Selon nos Haut display, nous pouvons discerner qu’il existe quatre instances de chrome en cours d’exécution avec les ID de processus (PID) 3827, 3919, 10764 et 11679. Cette information sera importante avec une méthode particulière pour tuer le processus.
Bien que Haut est 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 que vous devez tuer, et que vous ne voulez pas avoir à parcourir les informations en temps réel offertes par Haut. Pour cela, vous pouvez utiliser le ps commande et filtrer la sortie à travers grep. le ps commande rapporte un instantané d’un processus en cours et grep imprime des lignes correspondant à un motif. La raison pour laquelle nous filtrons ps par grep est simple : si vous émettez le ps commande par elle-même, vous obtiendrez une liste instantanée de tous les processus en cours. Nous voulons uniquement la liste associée à Chrome. Donc cette commande ressemblerait à :
ps aux | grep chrome
le aux les options 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
le X L’option est importante lorsque vous recherchez des informations concernant une application graphique.
Lorsque vous exécutez 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.
Figure 2 : Localisation des informations nécessaires avec la commande ps.
Tuer le processus
Nous arrivons maintenant à la tâche de tuer le processus. Nous avons deux informations qui nous aideront à tuer le processus errant :
Nom du processus ID du processus
Ce que vous utilisez déterminera la commande utilisée pour la terminaison. Il y a deux commandes utilisées pour tuer un processus :
kill – Tuer un processus par ID killall – Tuer un processus par son nom
Il existe également différents signaux qui peuvent être envoyés aux deux commandes d’élimination. Le signal que vous envoyez sera déterminé par les résultats que vous attendez de la commande kill. Par exemple, vous pouvez envoyer le signal HUP (raccrocher) à la commande kill, ce 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 exécutant kill -l. Vous trouverez un assez grand nombre de signaux (Figure 3).
Figure 3 : Les signaux de mise à mort disponibles.
Les signaux de mise à mort les plus courants sont :
Nom du signal
Valeur unique
Effet
S’INSCRIRE
1
Raccrocher
SIGINT
2
Interruption depuis le clavier
SIGKILL
9
Signal de mise à mort
SIGTERM
15
Signal de terminaison
SIGSTOP
17, 19, 23
Arrêter le processus
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 besoin de mémoriser tous les noms des différents signaux.
Alors, utilisons maintenant le tuer commande pour tuer notre instance de chrome. La structure de cette commande serait :
tuer SIGNAL PID
Où SIGNAL est le signal à envoyer et PID est l’ID de processus à tuer. Nous savons déjà, de notre ps commande que les identifiants que nous voulons supprimer sont 3827, 3919, 10764 et 11679. Donc, pour envoyer le signal de suppression, nous énonçons les commandes :
tuer -9 3827
tuer -9 3919
tuer -9 10764
tuer -9 11679
Une fois que nous avons émis les commandes ci-dessus, tous les processus Chrome auront été supprimés avec succès.
Prenons la voie facile ! Si nous savons déjà que le processus que nous voulons tuer s’appelle chrome, nous pouvons utiliser le tuer tous commande et envoie le même signal au processus comme ceci :
killall -9 chromé
Le seul inconvénient de la commande ci-dessus est qu’elle peut ne pas intercepter tous les processus Chrome en cours d’exécution. Si, après avoir exécuté la commande ci-dessus, vous exécutez la commande ps aux|grep chrome et voyez les processus restants en cours d’exécution, votre meilleur pari est de revenir à la tuer commande et 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 pourriez le penser. Lorsque je me retrouve avec un processus têtu, j’ai tendance à commencer par le tuer tous commande car il s’agit de la route la plus efficace vers la terminaison. Cependant, lorsque vous vous retrouvez avec un processus vraiment fougueux, le tuer la commande est la voie à suivre.
La poste Classic SysAdmin : Comment tuer un processus à partir de la ligne de commande Linux est apparu en premier sur Fondation Linux.