ubuntuusers.de

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:

Wiki/Icons/terminal.png 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  

Diese Revision wurde am 21. Mai 2022 15:11 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell