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 werden
  • Match 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

# Zuerst die passenden Prozesse anzeigen
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?

  1. Effizienz: pgrep fragt Kernel-Prozessinformationen direkt ab, was es effizienter macht als ps | grep
  2. Sicherheit: pgrep passt nicht auf seinen eigenen Prozess, während ps | grep auf den grep-Prozess selbst passen kann
  3. 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:

  1. Der Prozessname ist falsch geschrieben
  2. Nicht die-fOption zum Abgleich der vollständigen Befehlszeile
  3. Der Prozess gehört einem anderen Benutzer, und Sie haben keine ausreichende Berechtigung, ihn anzuzeigen
  4. 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

if pgrep -x "nginx" >/dev/null; dann
    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

for pid in $(pgrep java); do
    echo "Verarbeite Java-Prozess $pid"
    # Weitere Operationen...
done

Überwachung der Systemressourcen

Anzahl und Ressourcennutzung bestimmter Prozesstypen ermitteln:

Beispiel

count=$(pgrep -c chrome)
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:

  1. Bestimmte Prozesse genau und schnell finden
  2. Zuverlässigere Systemadministrationsskripte schreiben
  3. 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.


Vollständiger Leitfaden zu Linux-Befehlen

Andere Erweiterungen