pgrep: Einfache Suche nach Prozessen

  Ralf Hersel   Lesezeit: 3 Minuten  🗪 3 Kommentare Auf Mastodon ansehen

Mit pgrep kann man mit einem Befehl im Terminal nach Prozessen suchen, um deren Process-Id zu erfahren.

pgrep: einfache suche nach prozessen

Wer Linux nutzt, braucht kein Terminal. Diese Aussage stimmt, doch häufig ist das Terminal die einfachere und bessere Lösung, um zum Ziel zu kommen. Unsere Beiträge richten sich auch an Einsteiger und Umsteiger, die wir nicht verschrecken möchten. Deshalb richtet sich dieser Artikel an diese Leserschaft.

Manchmal passiert es, dass sich Anwendungen während der Nutzung verabschieden, einfrieren oder nicht mehr reagieren. Dann kann man die grafische Systemüberwachung (Gnome) aufrufen, die bei eurer Distribution auch anders heissen kann. Die sieht so aus:

Dort kann man nach der problematischen Anwendung suchen und diese beenden oder zum Beenden zwingen. Alternativ steht das Terminal immer bereit, was von besonderer Bedeutung ist, wenn die grafische Benutzeroberfläche auch eingefroren ist. Aber nicht nur dann: viele Anwender:innen haben die Einfachheit des Terminals schätzen gelernt und nehmen gar nicht erst den Umweg über eine GUI-Anwendung.

Das übliche Kommando im Terminal, um die laufenden Anwendungen (Prozesse) anzuzeigen, lautet: ps -aux

Die Bedeutung dieses Befehls erklärt uns die Mistral-KI:

Der Befehl `ps -aux` in Linux wird verwendet, um Informationen über alle derzeit laufenden Prozesse auf dem System anzuzeigen. Hier ist eine Aufschlüsselung des Befehls und seiner Optionen:

- `ps`: Dies ist der Befehl selbst, der für „Prozessstatus“ steht.
- `-a`: Mit dieser Option wird `ps` angewiesen, Informationen über alle Prozesse anzuzeigen, nicht nur über die, die mit dem aktuellen Terminal verbunden sind.
- `-u`: Diese Option fügt zusätzliche Informationen über jeden Prozess hinzu, wie z.B. den Benutzer, dem der Prozess gehört, die CPU-Nutzung und die Speichernutzung.
- `-x`: Diese Option schließt Prozesse ein, die nicht mit einem Terminal verbunden sind, wie z.B. Daemons und Systemprozesse.

Wenn Sie `ps -aux` ausführen, sehen Sie eine Liste aller Prozesse mit Details wie der Prozess-ID (PID), dem Benutzer, dem der Prozess gehört, der CPU- und Speichernutzung, dem Befehl, der den Prozess gestartet hat, und mehr. Dieser Befehl ist sehr nützlich, um die Systemleistung zu überwachen und Probleme zu beheben.

Nachdem man mit ps die ID des abgestürzten Prozesses herausgefunden hat ... Mooment, so einfach geht das nicht. Üblicherweise piped man die Ausgaben von ps in grep, um den maroden Prozess zu fnden. Das kann so aussehen:

ps -aux | grep nextcloud

ralf        1685  0.1  1.0 2850356 164684 ?      SLl  Mai09   0:20 /usr/bin/nextcloud --background
ralf       17540  0.0  0.0   6992  4212 pts/0    S+   00:12   0:00 grep "nextcloud"

Falls man den Namen der Anwendung nicht genau kennt, kann man mit grep auch nach Substrings suchen. Dazu stellt man den Suchbegriff in Anführungszeichen: grep "extclou". Nun kennt man die Prozess-ID und kann die abgestürzte Anwendung mit diesem Befehl beenden: killall [process-name] oder kill [prozess-id].

Ihr ahnt es bereits; das kann doch nicht der beste Weg sein.

Auftritt: pgrep

Bei dem, was ich oben gezeigt habe, kommen zwei Befehle zum Einsatz, ps und grep. Wusstet ihr, dass es die auch in Kombination gibt? Dieser Befehl heisst pgrep und macht genau das, was man erwartet: nach Prozessen suchen. Die Bedienung ist einfach:

pgrep nextcloud
1715

Die Eingabe ist der Name des gesuchten Prozesses; als Ausgabe erhält man die Prozess-Id. Wer mehr Informationen in der Ausgabe erhalten möchte, kann sich die zusätzlichen Parameter mit man pgrep ansehen.

Titelbild: https://www.pexels.com/de-de/foto/schwarze-bewirtschaftete-brille-vor-laptop-computer-577585/

Quelle: https://www.mankier.com/1/pgrep

Tags

Terminal, Prozesse, pgrep

Günter
Geschrieben von Günter am 14. Mai 2025 um 12:01

Der killall Befehl funktioniert leider nicht nach der Eingabe von pgrep und Prozess ID. An einem einfachen Beispiel mit laufendem Geary erhalte ich mit pgrep die Prozess ID 7121. Nach Eingabe von killall 7121 meldet das Terminal : Prozess nicht gefunden. Über den GUI Systemmonitor mit derselben Prozess ID kann man Geary seltsamerweise "killen"? Sind im Terminal womöglich noch Zusatzangabe erforderlich?

Ralf Hersel Admin
Geschrieben von Ralf Hersel am 14. Mai 2025 um 14:39

Weil killall keine Prozess-Id, sondern einen Prozess-Namen haben möchte.

Günter
Geschrieben von Günter am 14. Mai 2025 um 15:10

Stimmt, war meine Irritation....