GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden Sie die PID und PPID eines Prozesses in Linux

Die Kenntnis der PID und PPID eines Prozesses kann hilfreich sein, wenn Sie einen auf Ihrem System ausgeführten Prozess verwalten oder mit ihm interagieren müssen.

Es gibt zahlreiche Möglichkeiten, die PID (Process ID) und PPID (Parent Process ID) eines bestimmten Prozesses in Linux zu erhalten.

Befehl Beschreibung
pidof Prozessname Funktioniert mit exaktem Prozessnamen
pgrep Prozessname Gibt die PID aller Übereinstimmungen zurück
ps -o ppid=-p PID PPID von PID abrufen
$$ PID des aktuellen Prozesses/der aktuellen Shell
${PPID} PID des Elternprozesses des aktuellen Prozesses

Ich werde diese Befehle im Detail erklären, aber davor eine kurze Zusammenfassung von Prozess, PID und PPID.

Linux-Prozessgrundlagen

Alles, was auf Ihrem System läuft, wird über einen Prozess ausgeführt, der einfach die laufende Instanz eines Programms ist.

Allen Prozessen, die auf Ihrem System laufen, werden Identifikatoren zugewiesen. Diese können hilfreich sein, wenn Sie den Prozess überwachen möchten (z. B. um zu sehen, wie viel Speicher oder CPU verwendet wird) oder wenn Sie ihn beenden möchten, wenn er anfängt zu hängen oder sich einfach ein bisschen komisch verhält.

Die Identifikatoren, die an all diese Prozesse angehängt werden, sind als PIDs und PPIDs bekannt.

Was ist eine PID?

PID steht für „Prozess-ID“. Auch dies ist einfach die Kennung, die an ein Programm angehängt wird, wenn es gestartet wird, und kann hilfreich sein, wenn Sie auf die eine oder andere Weise mit dem Prozess interagieren müssen.

Was ist eine PPID?

PPID ist ziemlich eng mit einer PID verwandt. PPID steht für "Parent Process ID", und falls Sie es noch nicht wissen, steht es einfach für den Prozess, der erstellt wurde den Prozess, den Sie überprüfen.

Nehmen wir zum Beispiel an, wir haben zwei Prozesse. Einer heißt "Spawner" und hat eine Prozess-ID (oder PID) von 7234. Unser zweiter Prozess, "E-Mail-Client", hat eine Prozess-ID von 7456, wenn wir ihn erstellen. Unser Spawner-Programm startet unseren E-Mail-Client, was dazu führt, dass unser E-Mail-Client eine PID von 7456 und eine PPID von 7234 hat, da der Spawner (der die PID von 7234 hatte) den E-Mail-Client hervorgebracht hat.

Nachdem Sie nun Ihre Grundlagen aufgefrischt haben, sehen wir uns an, wie Sie die Prozess-ID unter Linux erhalten.

Abrufen der PID eines Prozesses

Wichtig ist hier, den Namen des Prozesses zu kennen, dessen PID Sie finden möchten.

Wenn Sie den genauen Prozessnamen kennen , können Sie seine Prozess-ID mit pidof abrufen Befehl:

pidof exact_process_name

Leichter gesagt als getan, da Sie möglicherweise nicht immer den genauen Prozessnamen kennen. Gut hier ist das pidof Der Befehl funktioniert mit der Tab-Vervollständigung. Wenn Sie also die Anfangsbuchstaben des Prozessnamens kennen, können Sie die Tabulatortaste drücken, um passende Vorschläge zu erhalten.

Dies funktioniert jedoch möglicherweise nicht immer, wenn der Prozessname nicht mit dem übereinstimmt, was Sie denken, dass er heißt. Beispielsweise heißt der Prozess für den Edge-Browser unter Linux msedge . Es beginnt nicht mit „Edge“ und die Tab-Vervollständigung funktioniert nicht, wenn Sie sich auf „Edge“ konzentrieren.

Sie können also auf den Befehl ps in Linux zurückgreifen, um alle laufenden Prozesse aller Benutzer aufzulisten, und dann grep für die Ausgabe verwenden, um das Ergebnis zu filtern.

ps aux | grep -i partial_process_name

Es gibt einen speziellen Befehl, der die Funktionen ps und grep kombiniert und wenig überraschend pgrep heißt :

pgrep partial_or_exact_process_name

Die Standardausgabe zeigt nur die PIDs ohne Informationen zum Prozess. Dies kann problematisch sein, wenn für Ihren Suchbegriff mehr als eine Prozess-ID zurückgegeben wird.

Daher schlage ich vor, die Auflistungsfunktion zu verwenden, um sicherzustellen, dass Sie die PID des gewünschten Prozesses erhalten.

pgrep -l partial_or_exact_process_name

Sie können auch den top-Befehl verwenden, um die Prozessinformationen zu erhalten, aber er kann nicht in Skripten verwendet werden.

💡Sie können den Befehl pstree verwenden, um die PIDs aller laufenden Prozesse auf Ihrem Linux-System abzurufen:pstree -p -a

PPID von der PID eines untergeordneten Prozesses abrufen

Sobald Sie die PID eines Prozesses kennen, ist es mühelos, die PPID für diesen Prozess zu finden.

Sie können einfach den folgenden Befehl ausführen und dabei PID ersetzen mit der aktuellen Prozess-ID (untergeordnet):

ps -o ppid= -p PID

In einer Shell der obige Befehl und ${PPID} sollten beide dieselbe Ausgabe zurückgeben:

Und das ist alles, was man zum Finden von PIDs und PPIDs braucht!

Prüfen der PID und PPID des aktuell laufenden Prozesses

Wenn Sie sich in einer Shell wie Bash befinden, ist es extrem einfach, die PID und PPID des aufrufenden Prozesses zu finden (was normalerweise die Shell sein wird).

Bash speichert den Wert der PID unter $$ Variable und die PPID unter ${PPID} Variable:

# Prints the PID.
echo "$$"

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

Auf diese Weise können Sie die Prozess-ID von Shell und Subshell erhalten.

Und es ist so einfach! Auch das Auffinden der PIDs und PPIDs anderer Prozesse ist nicht viel schwieriger.

Abschluss

Sie sollten jetzt alles wissen, was Sie brauchen, um sowohl PIDs als auch PPIDs für laufende Prozesse auf Ihrem System zu finden.

Wenn Sie Hilfe benötigen, um etwas zum Laufen zu bringen, oder noch Fragen haben, können Sie diese und andere Fragen gerne in den Kommentaren unten hinterlassen.


Linux
  1. So finden und töten Sie den Zombie-Prozess in Linux

  2. Finden Sie die Ausführungszeit eines Befehls oder Prozesses in Linux

  3. Wie finde ich die Prozess-ID in Ubuntu?

  4. Wie berechnet man die CPU-Auslastung eines Prozesses durch PID in Linux von C?

  5. So finden Sie die .pid-Datei für einen bestimmten Prozess

So finden Sie die Portnummer eines Dienstes in Linux

So finden Sie heraus, wer das Linux-System wann neu gestartet hat

So unterbrechen Sie einen Prozess und setzen ihn später in Linux fort

So finden und löschen Sie defekte Symlinks in Linux

So finden und beenden Sie laufende Prozesse in Linux

So finden Sie die Prozess-ID eines Programms und beenden es [Kurztipp]