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.