GNU/Linux >> Tutoriels Linux >  >> Linux

Comment tuer les processus zombies dans Ubuntu

Un zombi ou un processus obsolète sous Linux est un processus terminé, mais son entrée reste dans la table des processus en raison d'un manque de correspondance entre les processus parent et enfant. Habituellement, un processus parent contrôle l'état de ses processus enfants via la fonction wait (). Lorsque le processus enfant est terminé, la fonction d'attente signale au parent de quitter complètement le processus de la mémoire. Cependant, si le parent ne parvient pas à appeler la fonction d'attente pour l'un de ses enfants, le processus enfant reste actif dans le système en tant que processus mort ou zombie. Ces processus zombies peuvent s'accumuler en grand nombre sur votre système et affecter ses performances. Dans ce cas, vous devrez peut-être tuer ces zombies manuellement en suivant les méthodes et commandes décrites dans ce didacticiel.

Ce tutoriel est compatible avec toutes les versions récentes d'Ubuntu, y compris Ubuntu 22.04.

Affichage des processus zombies

Vous pouvez vérifier les performances de votre système en examinant les différents processus en cours d'exécution sur votre système, y compris les processus zombies qui modifient l'efficacité. Ubuntu vous permet de visualiser ces processus de la manière suivante :

  • Grâce à l'interface utilisateur graphique
  • Par la ligne de commande

Grâce à l'interface graphique

Afin de visualiser graphiquement tous les processus zombies en cours d'exécution sur votre système, ouvrez le Moniteur système utilitaire via votre Ubuntu Dash. Dans la capture d'écran suivante de mon moniteur système, vous pouvez voir qu'il y a deux zombies en cours d'exécution sur mon système. Il est également possible que le nombre de processus zombies sur votre système soit inférieur ou supérieur à ceux exécutés sur le mien.

Par la ligne de commande

Le haut La commande affiche une vue détaillée des processus en cours d'exécution sur votre système ainsi que les ressources de mémoire et de processeur qu'ils utilisent. Il vous donne également des informations sur tous les processus zombies en cours d'exécution sur votre système. Ouvrez le terminal en appuyant sur Ctrl+Alt+T puis tapez top . J'ai obtenu le résultat suivant après avoir exécuté cette commande.

$ en haut

Vous pouvez voir dans la deuxième ligne qu'il y a 1 processus zombie en cours d'exécution sur mon système.

Si vous souhaitez plus de détails sur le processus zombie, utilisez la commande suivante :

$ ps axo stat,ppid,pid,comm | grep -w defunct

Cette commande vous donnera l'état, l'ID parent, l'ID de processus, le programme qui exécute le processus zombie (un programme factice du nom de "zombie" sur mon système). L'indicateur défunt vous indique qu'il s'agit d'un processus zombie mort.

Tuer un processus zombie

Tout d'abord, comprenons comment les processus zombies constituent une menace pour les performances de notre système. Il est important d'apprendre que les zombies sont des processus morts et pour la plupart complets qui ne prennent pas de mémoire ou de ressources CPU. Cependant, chacun de ces processus se voit attribuer un ID de processus unique qui provient d'un pool limité de PID réservés à votre processeur. Si un grand nombre de zombies se rassemblent, ils consommeront la majeure partie du pool de PID et les nouveaux processus ne pourront pas se lancer en raison de l'absence d'ID de processus.

Un petit nombre de programmes obsolètes occupant votre système n'est pas une grande menace, mais cela signifie que leurs programmes parents n'ont pas pu les annuler en raison d'un bogue ou d'une fonction wait() manquante.

Lorsqu'un processus parent n'a pas été en mesure d'appeler automatiquement la fonction wait (), nous devons signaler manuellement au processus parent d'exécuter la fonction wait sur tous ses enfants afin que ceux dont l'état est complet puissent être rappelés. Nous pouvons le faire en exécutant la commande SIGCHLD. Lorsque cela ne fonctionne pas, nous pouvons tuer manuellement le processus parent afin que tous ses enfants zombies soient également tués, libérant ainsi les ID de processus pour les nouveaux processus.

Vous pouvez tuer les processus zombies des manières suivantes :

  • Grâce à l'interface utilisateur graphique
  • Par la ligne de commande

Grâce à l'interface graphique

Vous pouvez supprimer graphiquement un processus zombie via l'utilitaire System Monitor comme suit :

  1. Ouvrez le Moniteur système utilitaire via Ubuntu Dash.
  2. Recherchez le terme Zombie via la Recherche bouton.
  3. Sélectionnez le processus zombie, faites un clic droit puis sélectionnez Tuer dans le menu.

Le processus zombie sera supprimé de votre système.

Par la ligne de commande

Une fois que vous savez qu'il y a des processus zombies en cours d'exécution sur votre système via la commande top. Voici comment afficher les détails des processus.

La méthode habituelle consiste à utiliser la commande suivante qui signale au processus parent du zombie de tuer la commande.

$ kill -s SIGCHLD PID

Cette commande peut ne pas fonctionner dans quelques cas car tous les processus parents ne sont pas programmés correctement afin de vérifier les processus enfants. Dans ce cas, vous pouvez tuer le processus parent via la commande suivante :

$ sudo kill -9 3376

Lorsque vous aurez tué tous les processus zombies de cette manière et exécuté la commande top, vous pourrez voir qu'il n'y a plus de processus zombies en cours d'exécution sur votre système :

Après avoir suivi ce didacticiel, vous pouvez optimiser votre système d'exploitation en recherchant tous les processus zombies sur votre système et en les tuant manuellement via la ligne de commande ou l'interface utilisateur graphique. Cet acte libérera des ID de processus pour les nouveaux processus que vous souhaitez exécuter sur votre système.


Linux
  1. Comment tuer un processus zombie sous Linux

  2. Comment trouver et tuer le processus Zombie sous Linux

  3. Que sont les processus zombies et comment trouver et tuer les processus zombies ?

  4. Comment tuer le processus zombie

  5. Tuer les processus dans Raspbian

Comment trouver et tuer les processus zombies dans CentOS 8

Comment créer un processus zombie factice dans Ubuntu 18.04 LTS

Comment tuer les processus zombies dans Ubuntu 20.04 LTS

Comment tuer un processus sous Linux

Comment tuer les processus sous Linux en utilisant kill, killall et pkill

Comment réparer le système Ubuntu qui ne répond pas ?