Linux pgrep-Befehl
Vollständiger Leitfaden zu Linux-Befehlen
pgrep ist ein sehr praktisches Werkzeug zur Prozesssuche in Linux-Systemen und ist Teil des Pakets procps oder procps-ng. Der Name dieses Befehls stammt von "process grep". Wie der Name schon sagt, kann es Prozesse im System durchsuchen, genau wie der grep-Befehl Text durchsucht.
Die Hauptfunktion von pgrep besteht darin, laufende Prozesse anhand gegebener Bedingungen zu finden und die PIDs (Prozess-IDs) dieser Prozesse zurückzugeben. Im Vergleich zum traditionellen Ansatz, den ps-Befehl mit grep zu kombinieren, ist pgrep prägnanter und effizienter.
Grundlegende Syntax von pgrep
Das grundlegende Syntaxformat des Befehls pgrep lautet wie folgt:
pgrep [选项] [匹配模式]
Wobei:
Options: verschiedene Optionen, mit denen Suchbedingungen oder das Ausgabeformat angegeben werdenMatch Mode: Muster eines regulären Ausdrucks, das zum Abgleichen von Prozessnamen verwendet wird
Häufige Optionen
pgrep bietet mehrere Optionen, um das Suchverhalten präzise zu steuern. Hier sind die gängigen Optionen:
| Option | Beschreibung |
|---|---|
-l |
Sowohl den Prozessnamen als auch die PID anzeigen |
-a |
Die vollständige Befehlszeile anzeigen, nicht nur den Prozessnamen |
-f |
Die vollständige Befehlszeile (einschließlich der Argumente) abgleichen, nicht nur den Prozessnamen |
-u |
Nur Prozesse abgleichen, die dem angegebenen Benutzer gehören |
-x |
Den gesamten Prozessnamen exakt abgleichen |
-n |
Nur den neuesten (zuletzt gestarteten) übereinstimmenden Prozess anzeigen |
-o |
Nur den ältesten (am frühesten gestarteten) übereinstimmenden Prozess anzeigen |
-c |
Nur die Anzahl der übereinstimmenden Prozesse zurückgeben, ohne PIDs anzuzeigen |
-d |
Das Ausgabe-Trennzeichen angeben (Standard ist Zeilenumbruch) |
-P |
Nur Kindprozesse der angegebenen übergeordneten Prozess-ID abgleichen |
-g |
Nur Prozesse mit der angegebenen Prozessgruppen-ID abgleichen |
-t |
Nur Prozesse am angegebenen Terminal (tty) abgleichen |
Anwendungsbeispiele
Einfache Prozesssuche
Alle Prozesse mit dem Namen "nginx" finden:
pgrep nginx
Dieser Befehl gibt die Prozess-IDs aller Prozesse zurück, deren Name "nginx" enthält.
Prozessnamen anzeigen
Den Prozess "ssh" finden und seinen Prozessnamen anzeigen:
pgrep -l ssh
Beispielausgabe:
1234 sshd 5678 ssh-agent
Exakter Abgleich des Prozessnamens
Nur Prozesse abgleichen, die exakt "bash" heißen (mit Ausnahme von "bashrc" und Ähnlichem):
pgrep -x bash
Vollständige Befehlszeile abgleichen
Prozesse finden, die bestimmte Argumente enthalten, zum Beispiel sshd-Prozesse finden, die einen bestimmten Port verwenden:
pgrep -f "sshd -p 2222"
Nach Benutzer filtern
Alle Prozesse finden, die vom Benutzer "www-data" ausgeführt werden:
pgrep -u www-data
Kombinierte Bedingungssuche
Prozesse mit dem Namen "mysqld" finden, die vom Benutzer "mysql" ausgeführt werden:
pgrep -u mysql mysqld
Prozesse zählen
Die Anzahl der laufenden "chrome"-Prozesse zählen:
pgrep -c chrome
Neuesten/Ältesten Prozess finden
Den zuletzt gestarteten "python"-Prozess finden:
pgrep -n python
Den am frühesten gestarteten "python"-Prozess finden:
pgrep -o python
Erweiterte Nutzung
Verwendung mit pkill
pgrep wird oft zusammen mit dem Befehl pkill verwendet. Zuerst können Sie mit pgrep die zu beendenden Prozesse anzeigen; nachdem Sie bestätigt haben, dass sie korrekt sind, verwenden Sie pkill:
Beispiel
pgrep -l apache2
# Diese Prozesse nach Bestätigung beenden
pkill apache2
Benutzerdefiniertes Trennzeichen
Standardmäßig verwendet pgrep Zeilenumbrüche, um mehrere PIDs zu trennen. Sie können dies ändern, sodass Kommas verwendet werden:
pgrep -d, nginx
Beispielausgabe:
1234,5678,9012
Prozesse an einem bestimmten Terminal finden
Alle Prozesse finden, die auf dem Terminal tty1 ausgeführt werden:
pgrep -t tty1
Kindprozesse finden
Alle Kindprozesse des Prozesses mit der PID 1234 finden:
pgrep -P 1234
FAQ
Was ist der Unterschied zwischen pgrep und ps | grep?
- Effizienz: pgrep fragt Kernel-Prozessinformationen direkt ab, was es effizienter macht als ps | grep
- Sicherheit: pgrep passt nicht auf seinen eigenen Prozess, während ps | grep auf den grep-Prozess selbst passen kann
- Funktionen: pgrep bietet speziellere Optionen zur Prozesssuche
Warum findet pgrep manchmal keinen Prozess, von dem ich weiß, dass er läuft?
Mögliche Gründe:
- Der Prozessname ist falsch geschrieben
- Nicht die
-fOption zum Abgleich der vollständigen Befehlszeile - Der Prozess gehört einem anderen Benutzer, und Sie haben keine ausreichende Berechtigung, ihn anzuzeigen
- Der Prozess wurde bereits beendet
Wie überprüfe ich die pgrep-Version?
pgrep -V
Praktische Anwendungsfälle
Dienststatus überwachen
Prüfen, ob ein Dienst in einem Skript läuft:
Beispiel
echo "Nginx läuft"
else
echo "Nginx läuft nicht"
fi
Batch-Operationen für Prozesse
PIDs aller Java-Prozesse abrufen und Operationen ausführen:
Beispiel
echo "Verarbeite Java-Prozess $pid"
# Weitere Operationen...
done
Überwachung der Systemressourcen
Anzahl und Ressourcennutzung bestimmter Prozesstypen ermitteln:
Beispiel
memory=$(ps -o rss= -p $(pgrep chrome) | awk '{sum+=$1} {sum}')
echo Chrome-Prozesse $count, Gesamtspeicher ${memory}KB"
Zusammenfassung
pgrep ist ein flexibles und effizientes Werkzeug in der Linux-Systemadministration. Es vereinfacht die Prozesssuche. Wenn Sie die verschiedenen Optionen und Verwendungsmöglichkeiten von pgrep erlernen, können Sie:
- Bestimmte Prozesse genau und schnell finden
- Zuverlässigere Systemadministrationsskripte schreiben
- Die Effizienz der Systemadministrationsarbeit verbessern
Denken Sie daran: Nachdem Sie pgrep zum Auffinden von Prozessen verwendet haben, insbesondere bevor Sie Prozesse beenden, bestätigen Sie immer, dass Sie den richtigen Prozess gefunden haben, um nicht versehentlich wichtige Dienste zu beenden.
Andere Erweiterungen