Linux / Befehl pgrep: Prozess-IDs nach Name oder Kriterien finden

pgrep findet die Prozess-ID laufender Prozesse basierend auf Bedingungen wie Prozessname und Benutzer. Es ist ein Befehl, um die Ziel-PID zu überprüfen und beendet den Prozess nicht von selbst.

Das grundlegende Muster wird mit einem regulären Ausdruck auf den Prozessnamen angewendet. Verwenden Sie -x, wenn der gesamte Name genau übereinstimmen muss, und -f, um die vollständige Befehlszeile zu überprüfen. -f kann breiter übereinstimmen, stellen Sie also sicher, dass Sie die Ergebnisse überprüfen.

Grundlegende Syntax

pgrep [option] pattern

Installierte Implementierungen und Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung auf dem aktuellen System mit man pgrep.

Beispiele

PID nach Namen suchen

Gibt die passenden PIDs zeilenweise aus.

pgrep sshd

Namen und PID zusammen anzeigen

Zeigt an, welche Aufgaben ausgewählt sind, um Fehler zu reduzieren.

pgrep -a sshd

Exakte Namensbeschränkung mit Benutzer

Den Bereich eingrenzen, um das Auswählen von Prozessen mit demselben Namen anderer Benutzer zu vermeiden.

pgrep -u alice -x python3

Grund, warum die Suchergebnisse als PID angezeigt werden

pgrep gibt die PID von Prozessen aus, die den Bedingungen entsprechen. Die Verwendung von -a zeigt sowohl die PID als auch die vollständige Befehlszeile an, was die Überprüfung erleichtert.

pgrep -a sshd

Beispielausgabe (auf einem System, auf dem der Prozess läuft):

1234 /usr/sbin/sshd -D

Wenn keine Zeilen erscheinen, gibt es möglicherweise keinen passenden Prozess oder es könnten Berechtigungs- oder Bedingungsprobleme vorliegen. Standardmäßig zielt die Suche auf den Prozessnamen ab, und um die vollständige Befehlszeile zu durchsuchen, verwenden Sie -f. Breite Muster können unerwartete Prozesse einbeziehen, daher sollten die Ergebnisse vor der Weitergabe an Beendigungskommandos überprüft werden.

Hauptoptionen und Format

Optionen/Format Beschreibung
-a Zeigen Sie die PID zusammen mit der vollständigen Befehlszeile an.
-x Der gesamte Prozessname muss dem Muster entsprechen.
-f Überprüfen Sie die vollständige Befehlszeile anstelle des Prozessnamens.
-u user Begrenzen Sie den Geltungsbereich auf effektive Benutzer-IDs.
-n / -o Wählen Sie entweder die neueste oder die älteste Übereinstimmung aus.

Vorsichtsmaßnahmen bei der Verwendung

Der Prozessname kann von der sichtbaren Befehlszeile abweichen, und lange Namen können von den internen Begrenzungen der Implementierung betroffen sein. -f kann mehr Jobs finden als erwartet. Bevor die gefundene PID an kill weitergegeben wird, überprüfe sie noch einmal mit ps -p PID -o cmd= oder Ähnlichem.

Häufig gestellte Fragen

Ist es ein Fehler, wenn es keine Ergebnisse von pgrep gibt?

Es bedeutet normalerweise, dass keine Prozesse der Bedingung entsprechen und der Exit-Status möglicherweise nicht 0 ist. Um den Dienststatus zu bestätigen, überprüfen Sie auch die Ausführungszeit und die Suchbedingungen.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und Implementierungsunterschiede in der offiziellen pgrep-Dokumentation nachlesen.