pgrep
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Oftmals möchte man nur wissen, ob ein bestimmtes Programm läuft oder welche Prozessnummer (PID) es hat. Dafür ist pgrep der ideale Helfer. Kombinationen mit mehreren Pipes und grep oder gar awk sind dazu nicht nötig. Allerdings gibt es ein paar Feinheiten zu beachten, damit pgrep auch die gewünschten Ergebnisse liefert.
Installation¶
Das Programm ist im Paket
procps
Befehl zum Installieren der Pakete:
sudo apt-get install procps
Oder mit apturl installieren, Link: apt://procps
enthalten, welches bei jeder Ubuntuinstallation automatisch mit installiert wird.
Beschreibung¶
pgrep durchsucht die Liste der laufenden Programme und gibt deren PID, evtl. auch den gesamten Namen, auf stdout
aus, dabei müssen alle Auswahlkriterien zutreffen. Der Suchbegriff (Programmname) kann dabei auch als Regulärer Ausdruck angegeben werden. pgrep und pkill nutzen dabei die gleiche Syntax.
Syntaxaufruf für die Verwendung in der Shell [1]:
pgrep [-cflvx] [-d delim] [-n|-o] [-P ppid,...] [-g pgrp,...] [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...] [-t term,...] [Suchbegriff]
Wenn pgrep
ohne die Option -f
aufgerufen wird, muss der gesuchte Prozessnamen auf 15 Zeichen gekürzt werden, da die Suche sonst leer bleibt.
Wenn pgrep
ohne die Option -x
aufgerufen wird werden alle Prozesse gefunden, die den Suchbegriff im Prozessnamen beinhalten.
pgrep
kennt unter anderem die folgenden Optionen:
Optionen von pgrep | |
Option | Beschreibung |
-c | Statt der PIDs wird die Anzahl der laufenden Prozesse ausgegeben |
-d delim | Standardmäßig gibt pgrep je Zeile eine PID aus, durch Angabe eines Delimiters kann dies geändert werden. |
-f | Durch die Angabe von -f werden nicht nur die Prozessnamen sondern die gesamte Kommandozeile durchsucht, also auch evtl. vorhandene Parameter. |
-l | Die Option -l bewirkt, dass neben der PID auch der Prozessname aufgelistet wird. |
-v | Negiert den Suchbegriff. |
-x | Findet nur Prozesse mit genau diesem Suchbegriff . |
-n | Selektiert nur den neuesten (zuletzt gestarteten) Prozess. |
-o | Selektiert nur den ältesten (zuerst gestarteten) Prozess. |
-P pid,... | Findet nur Prozesse deren Elternprozess die PID pid haben. Eine Angabe von -P1 findet die Prozesse die vom Elternprozess 1, also init gestartet wurden. |
-U uid,... | Findet nur Prozesse der realen User-ID, dabei kann der numerische (z.B 1000) oder auch der symbolische Wert (z.B. username) genutzt werden. |
Für weitere Informationen siehe man: pgrep
.
Beispiele¶
Listen der PID aller Prozesse die im Namen ssh
beinhalten
pgrep ssh
Listen der PID und des Programmnamens die im Namen ssh
beinhalten
pgrep -l ssh
Anzahl aller Prozesse die im Namen ssh
beinhalten
pgrep -c ssh
Listen aller Prozesse die im Namen ssh
beinhalten und vom Elternprozess 1 (init) gestarted wurden.
pgrep -P1 ssh
Listen aller Prozesse die genau den Namen sshd
haben.
pgrep -x sshd
Listen aller Prozesse, PID und Namen, die irgendwo den Suchbegriff start
enthalten
pgrep -fl start
Listen der Prozesse, PID und Namen, die den Suchbegriff systemd-timesyncd
beinhalten. (Man beachte die Kürzung des Prozessnamens bei der Ausgabe auf 15 Zeichen.)
pgrep -fl systemd-timesyncd
600 systemd-timesyn
Zeigt die PID des Prozesses systemd-timesyncd
(Man beachte die Kürzung des Prozessnamens beim Aufruf des Befehls auf 15 Zeichen.)
pgrep systemd-timesyn
600
Damit lassen sich von pgrep
gefundene Prozess-IDs auf den Befehl kill
umleiten.
pgrep systemd-timesyn | xargs kill
Links¶
pidof Anzeigen der Prozess-ID