Wie man das Elternprozess-PPID in Linux findet

Bei jeder Ausführung eines Programms erstellt der Kernel einen Prozess, der mit dem Programm verbunden ist. Einfach ausgedrückt ist ein Prozess eine laufende Instanz eines Programms in Linux.

Der vom Kernel erstellte Prozess wird als ‚Elternprozess‘ bezeichnet. Prozesse, die sich vom Elternprozess ableiten oder von ihm ausgehen, werden als ‚Kindprozesse‘ bezeichnet. Ein Elternprozess kann aus mehreren Kindprozessen bestehen, von denen jeder eine eindeutige PID (Prozess-ID) hat, aber dieselbe PPID (Elternprozess-ID) teilt.

In dieser Anleitung erkunden wir verschiedene Möglichkeiten, wie Sie die Elternprozess-IDs (PPIDs) oder Prozesse auf einem Linux-System herausfinden können.

Was ist der Unterschied zwischen einer PID und PPID?

A program that is loaded into memory and running is known as a process. Once started, the process is given a unique number known as the process ID (PID) that uniquely identifies it in the system. The process can be referred to at any time using its PID. For example, to kill a process, you will have to know its PID first.

Zusätzlich zur PID wird jedem Prozess eine Elternprozess-ID (PPID) zugewiesen, die zeigt, welcher Prozess es erzeugt hat. Somit ist die PPID die PID des Elternprozesses.

Um dies in den Kontext zu setzen, nehmen wir an, Prozess 5 mit einer PID von 5050 startet Prozess 6. Prozess 6 wird eine eindeutige PID wie 6670 zugewiesen, aber immer noch die PPID von 5050 erhalten.

Der Elternprozess hier ist Prozess 5 und das Kindprozess ist 6. Der Kindprozess erhält eine eindeutige PID, aber die PPID ist die gleiche wie die PID des Elternprozesses (Prozess 5)

A single parent can start multiple several child processes, each with a unique PID but all sharing the same PPID.

Elternprozess-ID (PPID) in Linux finden

Es gibt zwei Hauptansätze, um die PPID eines laufenden Prozesses auf einem Linux-System zu finden:

  • Verwenden Sie den pstree-Befehl.
  • Mit dem ps-Befehl.

Finden Sie den Linux-Prozess-PPID mit dem pstree-Befehl

A pstree command is a command-line tool that displays running processes as a tree, which makes for a convenient way of displaying processes in a hierarchy. It shows the parent-child relationship in a tree hierarchy.

Mit der -p-Option zeigt der pstree alle laufenden Elternprozesse zusammen mit ihren jeweiligen Kindprozessen und den zugehörigen PIDs.

$ pstree -p
Show Linux Running Processes in Tree Hierarchy

Aus der Ausgabe können wir die Elternprozess-IDs zusammen mit den Kindprozess-IDs sehen.

Zur Demonstration werden wir den PPID für Mozilla Firefox zusammen mit der gesamten Prozesshierarchie mit dem folgenden Befehl überprüfen:

$ pstree -p | grep 'firefox'
Find the PPID of the Linux Process

Aus der Ausgabe können Sie sehen, dass der PPID von Firefox 3457 ist und der Rest PIDs von Kindprozessen sind.

Um nur den PPID von Firefox anzuzeigen und den Rest der Ausgabe zu überspringen, leiten Sie die Ausgabe an den head-Befehl mit -1 weiter, um die erste Zeile anzuzeigen.

$ pstree -p | grep 'firefox' | head -1
Print PPID of Linux Process

Finden Sie den Linux-Prozess-PPID mithilfe des ps-Befehls

Die andere Option zur Ermittlung des PPID eines Prozesses ist der ps-Befehl, der ein weit verbreiteter Befehl ist, der die derzeit ausgeführten Prozesse auf einem Linux-System anzeigt.

Wenn er mit der -ef-Option verwendet wird, listet der ps-Befehl alle laufenden Prozesse zusammen mit ihren Details wie UID, PID, PPID usw. auf.

$ ps -ef
List Running Linux Processes with PID

Um es einzugrenzen und die PPID eines bestimmten Prozesses anzuzeigen, zum Beispiel Firefox, verwenden Sie die -e-Option und leiten Sie die Ausgabe an den grep-Befehl weiter, wie gezeigt.

$ ps -e | grep 'firefox'
Find Linux Process PID

Wiederum können Sie aus der Ausgabe sehen, dass die PPID von Firefox 3457 ist.

In diesem Leitfaden haben wir gezeigt, wie Sie die PPIDs von Prozessen ermitteln können, die auf einem Linux-System ausgeführt werden. Sie können entweder den pstree-Befehl oder den ps-Befehl verwenden, um zum gleichen Ziel zu gelangen.

Source:
https://www.tecmint.com/find-parent-process-ppid/