GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver le PID et le PPID d'un processus sous Linux

Connaître le PID et le PPID d'un processus peut être utile si vous devez gérer ou interagir avec un processus en cours d'exécution sur votre système.

Il existe de nombreuses façons d'obtenir le PID (ID de processus) et le PPID (ID de processus parent) d'un processus donné sous Linux.

Commande Description
pidof nom_processus Fonctionne avec le nom exact du processus
pgrep nom_processus Renvoie le PID de toutes les correspondances
ps -o ppid=-p PID Obtenir le PPID à partir du PID
$$ PID du processus/shell actuel
${PPID} PID du parent du processus actuel

Je vais vous expliquer ces commandes en détail, mais avant cela, un bref récapitulatif du processus, du PID et du PPID.

Principes de base du processus Linux

Tout ce qui s'exécute sur votre système est exécuté via quelque chose appelé processus, qui est simplement l'instance en cours d'exécution d'un programme.

Tous les processus qui s'exécutent sur votre système se voient attribuer des identifiants. Ceux-ci peuvent être utiles si vous souhaitez surveiller le processus (par exemple, pour voir la quantité de mémoire ou de processeur qu'il utilise), ou peut-être si vous voulez y mettre fin s'il commence à se bloquer ou simplement agir un peu funky.

Les identifiants associés à tous ces processus sont appelés PID et PPID.

Qu'est-ce qu'un PID ?

PID signifie "ID de processus". Encore une fois, il s'agit simplement de l'identifiant qui est attaché à un programme lorsqu'il démarre, et peut être utile si vous avez besoin d'interagir avec le processus d'une manière ou d'une autre.

Qu'est-ce qu'un PPID ?

PPID est assez étroitement lié à un PID. PPID signifie "ID de processus parent", et si vous ne l'avez pas déjà obtenu, il représente simplement le processus qui créé le processus que vous vérifiez.

Par exemple, disons que nous avons deux processus. L'un est nommé "spawner" et a un ID de processus (ou PID) de 7234. Notre deuxième processus, "client de messagerie", a un ID de processus de 7456 lorsque nous le créons. Notre programme générateur démarre notre client de messagerie, ce qui fait que notre client de messagerie a un PID de 7456 et un PPID de 7234, puisque le générateur (qui avait le PID de 7234) est ce qui a engendré le client de messagerie.

Maintenant que vous avez peaufiné vos bases, voyons comment obtenir l'ID de processus sous Linux.

Obtenir le PID d'un processus

L'important ici est de connaître le nom du processus dont vous voulez trouver le PID.

Si vous connaissez le nom exact du processus , vous pouvez obtenir son ID de processus en utilisant le pidof commande :

pidof exact_process_name

Plus facile à dire qu'à faire car vous ne connaissez peut-être pas toujours le nom exact du processus. La bonne chose ici est que pidof La commande fonctionne avec la complétion par tabulation, donc si vous connaissez les premières lettres du nom du processus, vous pouvez appuyer sur la tabulation pour obtenir des suggestions correspondantes.

Cependant, cela peut ne pas toujours fonctionner si le nom du processus ne correspond pas à ce que vous pensez qu'il s'appelle. Par exemple, le processus pour le navigateur Edge sous Linux s'appelle msedge . Il ne commence pas par 'edge' et la complétion de tabulation ne fonctionnera pas si vous vous concentrez sur 'edge'.

Ainsi, ce que vous pouvez faire est de recourir à la commande ps sous Linux pour répertorier tous les processus en cours d'exécution de tous les utilisateurs, puis d'utiliser grep sur la sortie pour filtrer le résultat.

ps aux | grep -i partial_process_name

Il existe une commande dédiée qui combine les fonctionnalités de la commande ps et grep et elle s'appelle sans surprise pgrep :

pgrep partial_or_exact_process_name

La sortie par défaut affiche uniquement les PID sans aucune information sur le processus. Cela peut être gênant si plusieurs ID de processus sont renvoyés pour le terme recherché.

Par conséquent, je suggère d'utiliser la fonction de liste pour vous assurer que vous obtenez le PID du processus souhaité.

pgrep -l partial_or_exact_process_name

Vous pouvez également utiliser la commande top pour obtenir les informations sur le processus, mais elle ne peut pas être utilisée dans les scripts.

💡Vous pouvez utiliser la commande pstree pour obtenir les PID de tous les processus en cours d'exécution sur votre système Linux :pstree -p -a

Obtenir le PPID à partir du PID d'un processus enfant

Une fois que vous connaissez le PID d'un processus, il est facile de trouver le PPID pour ce processus.

Vous pouvez simplement exécuter la commande suivante, en remplaçant PID avec l'ID de processus (enfant) actuel :

ps -o ppid= -p PID

Dans un shell, la commande ci-dessus et ${PPID} doivent tous les deux renvoyer le même résultat :

Et c'est à peu près tout ce qu'il y a à faire pour trouver des PID et des PPID !

Vérification du PID et du PPID du processus en cours d'exécution

Si vous êtes dans un shell tel que Bash, il est extrêmement facile de trouver le PID et le PPID du processus appelant (qui sera généralement le shell).

Bash stocke la valeur du PID sous le $$ variable, et le PPID sous le ${PPID} variables :

# Prints the PID.
echo "$$"

# Prints the PPID.
echo "${PPID}"

De cette façon, vous pouvez obtenir l'ID de processus du shell et du sous-shell.

Et c'est aussi simple que ça ! Trouver les PID et PPID d'autres processus n'est pas beaucoup plus difficile non plus.

Conclusion

Vous devriez maintenant savoir tout ce dont vous avez besoin pour trouver à la fois les PID et les PPID pour exécuter des processus sur votre système.

Si vous avez besoin d'aide pour faire fonctionner quelque chose, ou si vous avez simplement des questions en suspens, n'hésitez pas à laisser cela et toute autre chose dans les commentaires ci-dessous.


Linux
  1. Comment trouver et tuer le processus Zombie sous Linux

  2. Trouver le temps d'exécution d'une commande ou d'un processus sous Linux

  3. Comment trouver l'ID de processus dans Ubuntu ?

  4. Comment calculer l'utilisation CPU d'un processus par PID sous Linux à partir de C ?

  5. Comment obtenir le pid d'un processus et invoquer kill -9 dessus dans le script shell ?

Comment trouver le numéro de port d'un service sous Linux

Comment trouver qui a redémarré le système Linux et quand

Comment suspendre un processus et le reprendre plus tard sous Linux

Comment trouver et supprimer des liens symboliques brisés sous Linux

Comment trouver et tuer les processus en cours d'exécution sous Linux

Comment trouver l'ID de processus d'un programme et le tuer [Astuce rapide]