Recherche de site Web

Comment trouver l'ID du processus parent (PPID) sous Linux et Unix


Ce tutoriel vous montrera comment trouver l'ID du processus parent (PPID) des processus depuis la ligne de commande en utilisant les commandes ps et pstree dans les systèmes d'exploitation Linux et Unix-like avec des exemples.

Ce guide couvrira les méthodes pour découvrir les PPID de :

  1. Un processus spécifique : Trouvez le PPID d'un programme particulier qui vous intéresse.
  2. Tous les processus : Découvrez le PPID de chaque processus en cours d'exécution sur votre système.
  3. Le processus actuel: Identifiez le PPID de votre propre session shell.

Avantages du PPID

Connaître le ID du processus parent (PPID) d'un processus sous Linux peut être utile dans divers scénarios, en particulier pour l'administration système, le dépannage et la compréhension du comportement du système.

L'identifiant du processus parent (PPID) sous Linux est utile pour :

  • Analyse des hiérarchies de processus pour comprendre le comportement des applications et des services.
  • Identifier les processus orphelins qui peuvent consommer des ressources ou se comporter de manière imprévisible après la fermeture de leur processus parent.
  • Gestion des arbres de processus, permettant la terminaison ciblée de groupes de processus liés.
  • Débogage et développement, en particulier pour le dépannage et la gestion des processus enfants au sein des applications.
  • Analyse de la sécurité, aidant à retracer les processus suspects jusqu'à leur origine et à comprendre le comportement des logiciels malveillants.
  • Surveillance et optimisation des performances, en identifiant les processus gourmands en ressources et leurs origines.

Commençons !

Trouver l'ID du processus parent (PPID) d'un processus spécifique sous Linux

Il existe plusieurs façons de trouver l'identifiant du processus parent (PID) d'un processus donné sous Linux depuis la ligne de commande. Une manière courante est d'utiliser la commande ps, qui signifie « statut du processus ».

Cette commande est utilisée pour afficher des informations sur les processus actifs. Voyons comment trouver le PPID d'un processus avec la commande ps.

1. Ouvrez un terminal : Tout d'abord, vous devez ouvrir une fenêtre de terminal. Vous pouvez le faire en recherchant « Terminal » dans le menu de vos applications ou en utilisant un raccourci, qui est souvent Ctrl+Alt+T.

2. Trouvez le PID de votre processus : Avant de trouver le PID parent, vous devez connaître le PID de votre processus. Vous pouvez le trouver en utilisant la commande ps combinée avec grep.

Par exemple, si vous cherchez le PID d'un processus nommé bash, vous utiliseriez :

$ ps -aux | grep bash

Cette commande liste tous les processus actifs, puis filtre la liste pour n'afficher que les lignes contenant "bash". La sortie montrera plusieurs colonnes ; la deuxième indique les PID.

ostechn+   86631  0.0  0.0   8184  5136 pts/0    Ss   17:55   0:00 bash
ostechn+   87430  0.0  0.0   6240   652 pts/0    S+   18:00   0:00 grep bash

La commande ps -aux | grep bash est couramment utilisée pour lister les processus et filtrer ceux liés au shell « bash ». Cependant, il existe une manière plus élégante d’y parvenir sans inclure le processus grep lui-même dans les résultats. Voici quelques alternatives :

Utilisation de egrep avec des crochets :

$ ps aux | egrep '[b]ash'

Cela correspondra aux lignes contenant "bash", mais exclura le processus réel "grep" des résultats.

Exemple de sortie :

ostechn+   86631  0.0  0.0   8184  5136 pts/0    Ss   17:55   0:00 bash

Utilisation de pgrep (une approche plus fiable) :

$ pgrep bash
86631

Contrairement à ps aux, pgrep recherche directement les noms de processus et est moins susceptible d'inclure le processus grep dans le résultat.

Rappelez-vous que ces méthodes sont plus simples et évitent d'encombrer vos résultats avec le processus grep lui-même.

3. Affichez le PID du parent : Une fois que vous avez le PID de votre processus, vous pouvez trouver son PID parent (PPID) en utilisant la commande ps avec des options spécifiques.

Comme vous pouvez le voir dans la sortie de la commande précédente, le PID du processus bash est 86631.

Maintenant, vous pouvez afficher l'ID du processus parent du processus bash en utilisant la commande suivante :

$ ps -o ppid= -p 86631

Ici, -o ppid= indique à ps d'afficher uniquement le PID parent du processus, sans en-têtes, et -p 86631 spécifie le PID du processus qui vous intéresse. Remplacez 86631 par le PID réel de votre processus.

Afficher l'ID du processus parent (PPID) d'un processus donné

Selon la sortie ci-dessus, 86624 est l'ID du processus parent (PPID) du processus bash.

Cette méthode est simple et fonctionne bien pour trouver le PID parent d'un processus donné sous Linux. N'oubliez pas de remplacer bash par le nom réel du processus qui vous intéresse, et utilisez le PID correct que vous trouvez lors de votre recherche initiale.

Imprimer les PPID de tous les processus

Si vous voulez afficher les PPID de tous les processus sur votre machine Linux, vous utiliseriez :

$ ps j

Exemple de sortie :

   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
  86624   86631   86631   86631 pts/0      90712 Ss    1000   0:00 bash
  86631   90712   90712   86631 pts/0      90712 R+    1000   0:00 ps j

Comme vous le voyez dans la sortie ci-dessus, la commande ps j affiche un format axé sur le contrôle des tâches, montrant le PPID parmi d'autres détails pour tous les processus. C'est un moyen rapide d'obtenir un aperçu des hiérarchies des processus.

Comme indiqué dans la sortie ci-dessus, le PID du processus bash est 86631 et son PPID est 86624.

Pour voir le PPID d'un processus spécifique, il suffit d'inclure son PID, comme ps j 86631, pour voir les détails incluant son PPID.

$ ps j 86631
   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
  86624   86631   86631   86631 pts/0      93681 Ss    1000   0:00 bash
Imprimer les PPID de tous les processus

Vous pouvez filtrer uniquement les PPID en utilisant la commande awk et exclure tous les autres détails comme ci-dessous :

$ ps j | awk 'NR>1 {print $1}'
86624
86631
86631

Si vous êtes sur un système BSD (comme macOS), utilisez ps j | awk 'NR>1 {print $3}' pour lister les PPID de tous les processus.

Voir le PPID d'un processus en utilisant la commande pstree

La commande pstree sous Linux est un utilitaire qui affiche les processus en cours d'exécution sous forme d'arborescence. Cette structure en arbre représente visuellement la hiérarchie des processus, montrant les processus parents et leurs processus enfants de manière imbriquée.

Cette vue hiérarchique facilite la compréhension des relations entre les processus, y compris quels processus ont été générés par d'autres.

Pour lister le PPID d'un processus donné, par exemple bash, en utilisant la commande pstree, exécutez :

$ pstree -sg 86631

Cette commande visualise l'arbre des processus parents menant au processus spécifié (par exemple, 86631), ce qui est particulièrement utile pour comprendre l'ascendance des processus dans une vue hiérarchique.

systemd(1)───systemd(1697)───gnome-terminal-(86624)───bash(86631)───pstree(94963)

Obtention du PPID du processus actuel

Le « processus actuel » dans le contexte d'un système d'exploitation de type Unix (comme Linux) fait référence au processus qui est actuellement exécuté par le shell ou le terminal dans lequel vous travaillez.

Chaque fois que vous exécutez une commande dans le terminal, cette commande est exécutée comme un processus. Le shell lui-même est aussi un processus, et lorsque vous demandez le « processus actuel », cela signifie généralement le processus shell dans lequel vous opérez actuellement.

Lorsque vous interagissez avec un shell (comme Bash, Zsh, etc.), plusieurs variables d'environnement sont automatiquement définies, ce qui fournit des informations sur le shell et ses processus.

Deux variables importantes dans ce contexte sont :

  • $$ : Cette variable contient l'identifiant de processus (PID) du shell actuel. Elle vous donne le PID du processus exécutant l'instance du shell que vous utilisez actuellement.
  • $PPID : Cette variable contient l'identifiant du processus parent (PPID) du shell. Elle vous indique le PID du processus qui a démarré le shell actuel. Par exemple, si vous avez ouvert une fenêtre de terminal depuis un environnement de bureau graphique, le PPID serait probablement le PID du processus associé à l'environnement de bureau ou au gestionnaire de fenêtres.

Pour voir le PID de votre shell actuel, vous utiliseriez :

$ echo $$

Et pour voir le PID du processus parent de votre shell actuel, la commande serait :

$ echo $PPID

Comprendre ces concepts est utile pour la gestion des processus, le script et les tâches d'administration système.

Comprendre la différence entre PID et PPID

Nous savons maintenant comment trouver le PPID d'un processus donné. Vous pourriez vous demander quelle est la différence entre PID (Identifiant de processus) et PPID (Identifiant du processus parent). Discutons-en.

PID (Identifiant de processus):

  • Le PID est un identifiant numérique unique attribué à chaque processus en cours d'exécution dans un système d'exploitation.
  • Il représente une instance d'un programme ou d'une application qui est en cours d'exécution.
  • Les PID sont essentiels pour gérer les processus, car ils permettent au système de suivre et d'interagir avec des processus individuels.
  • Lorsque vous démarrez un nouveau processus (comme exécuter une commande dans le terminal), le système d'exploitation lui attribue un PID unique.
  • Les PID sont utilisés à diverses fins, y compris le contrôle des processus, la surveillance et la terminaison.

PPID (ID du processus parent) :

  • Le PPID fait référence au PID du processus qui a engendré ou créé un autre processus.
  • En d'autres termes, le PPID représente le processus parent d'un processus donné.
  • Lorsqu'un nouveau processus est créé (par exemple, en exécutant une commande shell), le système l'associe au PPID du processus qui l'a initié.
  • Le PPID établit une relation hiérarchique entre les processus, formant une structure en arbre.
  • Par exemple :

    • Si vous ouvrez un terminal (qui devient un processus avec un PID spécifique), le processus shell qui a lancé le terminal devient son PPID.
    • Tous les processus démarrés dans ce terminal (comme l'exécution de commandes) héritent du PID du terminal comme leur PPID.

En résumé, les PID identifient de manière unique les processus individuels, tandis que les PPID indiquent la relation parent-enfant entre les processus. Comprendre ces concepts est crucial pour la gestion des processus et le dépannage dans un système d'exploitation.

Conclusion

Dans ce tutoriel, nous avons expliqué comment obtenir l'ID du processus parent (PPID) pour un processus spécifique, les PPID de tous les processus, et le PPID du processus actuel en utilisant les commandes ps et pstree sous Linux.

Nous avons également discuté de la différence entre le PID et le PPID ainsi que de leur importance.

Comprendre et connaître l'identifiant du processus parent (PPID) offre des informations utiles sur la hiérarchie et les relations entre les processus sous Linux. Cette connaissance aide dans des tâches telles que le dépannage, la gestion des ressources et le renforcement de la sécurité.

Lecture connexe :

  • Comment lister tous les démons en cours d'exécution sous Linux
  • Comment savoir depuis combien de temps un processus s'exécute sous Linux
  • Comment changer la priorité d'un processus sous Linux
  • Comment Suspendre Un Processus Et Le Reprendre Plus Tard Sous Linux
  • Reptyr – Déplacer un processus en cours d'exécution d'un terminal à un autre sans le fermer