Der Befehl pgrep findet Prozess-IDs (PIDs) laufender Programme anhand ihres Namens oder anderer Kriterien. Statt manuell durch ps-Ausgaben zu suchen, liefert pgrep direkt die gesuchten PIDs.

Syntax des pgrep-Befehls

pgrep [OPTIONEN] MUSTER
  • OPTIONEN - Flags, die das Suchverhalten steuern.
  • MUSTER - Ein erweiterter regulärer Ausdruck zum Abgleich von Prozessnamen.

Der Befehl ist Teil des procps-Pakets und auf den meisten Systemen vorinstalliert.

Grundlegende Verwendung

Ohne Optionen zeigt pgrep alle PIDs von Prozessen an, deren Name das Muster enthält:

pgrep ssh

Die Ausgabe listet alle passenden PIDs, eine pro Zeile:

1039
2257
6850
31279

Falls keine Prozesse gefunden werden, bleibt die Ausgabe leer. Der Exit-Code ist 0 bei mindestens einem Treffer, sonst 1. Das macht pgrep besonders nützlich in Shell-Skripten.

Prozessnamen mit anzeigen

Die Option -l zeigt neben der PID auch den Prozessnamen:

pgrep -l ssh
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent

Da pgrep reguläre Ausdrucke verwendet, findet der Ausdruck ssh alle Prozesse, die diese Zeichenkette im Namen enthalten.

Exakte Namensübereinstimmung

Um nur Prozesse zu finden, deren Name exakt dem Muster entspricht, verwendest du Anker im regulären Ausdruck:

pgrep -l '^ssh$'
6850 ssh

Das Caret ^ markiert den Anfang, das Dollarzeichen $ das Ende des Namens.

Vollständige Kommandozeile durchsuchen

Standardmäßig durchsucht pgrep nur den Prozessnamen. Mit der Option -f wird stattdessen die gesamte Kommandozeile inklusive Argumente durchsucht:

pgrep -f "python.*server"

Das findet zum Beispiel einen Prozess, der mit python app_server.py gestartet wurde.

Prozesse eines bestimmten Benutzers finden

Die Option -u filtert nach dem Benutzer, der den Prozess ausführt:

pgrep -u root

Mehrere Benutzer trennst du mit Kommas:

pgrep -u root,www-data

Du kannst Benutzerfilter und Namensmuster kombinieren:

pgrep -l -u mark gnome

Dieser Befehl zeigt alle Prozesse des Benutzers mark, die gnome im Namen enthalten.

Trennzeichen ändern

Standardmäßig erscheint jede PID auf einer eigenen Zeile. Mit der Option -d legst du ein anderes Trennzeichen fest:

pgrep -d',' ssh
1039,2257,6850,31279

Das ist praktisch, wenn du die PIDs direkt an andere Befehle weitergeben willst.

Suche umkehren

Die Option -v kehrt die Suche um und zeigt alle Prozesse, die nicht dem Kriterium entsprechen:

pgrep -v -u root

Dieser Befehl listet alle Prozesse, die nicht vom Benutzer root ausgeführt werden.

Anzahl der Treffer zählen

Mit der Option -c erhältst du nur die Anzahl der passenden Prozesse:

pgrep -c -u www-data
12

Praktisches Beispiel: Prozess prüfen und Signal senden

Eine häufige Aufgabe ist es, zu prüfen, ob ein bestimmter Dienst läuft:

if pgrep -x nginx > /dev/null; then
    echo "Nginx läuft"
else
    echo "Nginx ist nicht aktiv"
fi

Die Option -x erzwingt eine exakte Übereinstimmung des Prozessnamens.

Der verwandte Befehl pkill

Der Befehl pkill verwendet dieselbe Syntax wie pgrep, sendet aber ein Signal an die gefundenen Prozesse statt deren PIDs auszugeben:

pkill -u mark firefox

Dieser Befehl beendet alle Firefox-Prozesse des Benutzers mark.

Zusammenfassung

Der Befehl pgrep ermöglicht die gezielte Suche nach Prozess-IDs anhand von Namen, Benutzern oder anderen Kriterien. In Kombination mit pkill bietet er eine effiziente Alternative zum manuellen Durchsuchen von ps-Ausgaben. Weitere Details findest du in der Manpage mit man pgrep.

Verwandte Artikel