Pgrep: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 3: | Zeile 3: | ||
== Beschreibung == | == Beschreibung == | ||
=== pgrep === | === pgrep === | ||
Durchsucht die gegenwärtig laufenden Prozesse und listet die Prozesskennungen (IDs), welche den Auswahlkriterien entsprechen, in der Standardausgabe auf | |||
* Übereinstimmungen sind für alle Auswahlkriterien erforderlich | |||
; Beispiel 1 | ; Beispiel 1 | ||
Prozesse, deren Name sshd lautet UND root gehören | |||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
pgrep -u root sshd | pgrep -u root sshd | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Beispiel | ; Beispiel 2 | ||
Prozesse, die entweder root ODER daemon gehören | |||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
$ pgrep -u root,daemon | $ pgrep -u root,daemon | ||
Zeile 18: | Zeile 19: | ||
=== pkill === | === pkill === | ||
Sendet | Sendet Signal (per Vorgabe SIGTERM) an passende Prozesse, anstatt diese in der Standardausgabe aufzulisten | ||
aufzulisten | |||
=== pidwait === | === pidwait === | ||
Wartet auf | Wartet auf passende Prozesse, anstatt diese in der Standardausgabe aufzulisten | ||
== Installation == | == Installation == | ||
Zeile 28: | Zeile 28: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Aufruf == | == Aufruf == | ||
<syntaxhighlight lang="bash" highlight="1-3" line> | <syntaxhighlight lang="bash" highlight="1-3" line> | ||
Zeile 40: | Zeile 41: | ||
! Unix !! GNU !! Parameter !! Beschreibung | ! Unix !! GNU !! Parameter !! Beschreibung | ||
|- | |- | ||
| -Signal || --signal || Signal || definiert das Signal, das an jeden der passenden Prozesse gesendet werden soll | | -Signal || --signal || Signal || definiert das Signal, das an jeden der passenden Prozesse gesendet werden soll | ||
* Dafür kann entweder der numerische oder ein symbolischer Signalname verwendet werden | * Dafür kann entweder der numerische oder ein symbolischer Signalname verwendet werden | ||
* Nur im pgrep- oder pidwait-Modus kann die lange Option verwendet werden | * Nur im pgrep- oder pidwait-Modus kann die lange Option verwendet werden | ||
* Sie ist allerdings dann wirkungslos, wenn sie nicht zusammen mit --require-handler verwendet wird, um nur Prozesse anzuzeigen, für die bei einem bestimmten Signal ein Userspace-Signalhandler vorhanden ist | * Sie ist allerdings dann wirkungslos, wenn sie nicht zusammen mit --require-handler verwendet wird, um nur Prozesse anzuzeigen, für die bei einem bestimmten Signal ein Userspace-Signalhandler vorhanden ist | ||
|- | |- | ||
| -c || --count || || unterdrückt normale Ausgaben und gibt stattdessen die Anzahl der passenden Prozesse aus | | -c || --count || || unterdrückt normale Ausgaben und gibt stattdessen die Anzahl der passenden Prozesse aus | ||
* Wenn keine Übereinstimmungen gefunden werden, liefert der Befehl einen von 0 verschiedenen Rückgabewert | * Wenn keine Übereinstimmungen gefunden werden, liefert der Befehl einen von 0 verschiedenen Rückgabewert | ||
* Beachten Sie, dass für pkill und pidwait die Anzahl der Anzahl der passenden Prozesse entspricht und nicht der Anzahl der Prozesse, an die erfolgreich ein Signal gesendet oder auf die gewartet wurde | * Beachten Sie, dass für pkill und pidwait die Anzahl der Anzahl der passenden Prozesse entspricht und nicht der Anzahl der Prozesse, an die erfolgreich ein Signal gesendet oder auf die gewartet wurde | ||
|- | |- | ||
| -d || --delimiter || Trenner || legt die in der Ausgabe als Trenner für die Prozesskennungen zu verwendende Zeichenkette fest | | -d || --delimiter || Trenner || legt die in der Ausgabe als Trenner für die Prozesskennungen zu verwendende Zeichenkette fest | ||
* Vorgabe ist ein Zeilenumbruch (gilt nur für pgrep) | * Vorgabe ist ein Zeilenumbruch (gilt nur für pgrep) | ||
|- | |- | ||
| -e || --echo || || zeigt Name und Prozesskennung des zu killenden Prozesses an (nur für pkill) | | -e || --echo || || zeigt Name und Prozesskennung des zu killenden Prozesses an (nur für pkill) | ||
|- | |- | ||
| -f || --full || || Das Muster wird normalerweise nur auf den Prozessnamen angewendet | | -f || --full || || Das Muster wird normalerweise nur auf den Prozessnamen angewendet | ||
* Wenn -f gesetzt ist, wird die vollständige Befehlszeile verwendet | * Wenn -f gesetzt ist, wird die vollständige Befehlszeile verwendet | ||
|- | |- | ||
| -g || --pgroup || Prozessgruppe, … || sucht nur nach passenden Prozessen, die in den Prozessgruppenkennungen aufgelistet sind | | -g || --pgroup || Prozessgruppe, … || sucht nur nach passenden Prozessen, die in den Prozessgruppenkennungen aufgelistet sind | ||
* Die Prozessgruppe 0 wird in die eigene Prozessgruppe von pgrep, pkill oder pidwait übersetzt | * Die Prozessgruppe 0 wird in die eigene Prozessgruppe von pgrep, pkill oder pidwait übersetzt | ||
|- | |- | ||
| -G || --group || Gruppenkennung, … || berücksichtigt nur Prozesse, deren reale Gruppenkennung aufgelistet ist | | -G || --group || Gruppenkennung, … || berücksichtigt nur Prozesse, deren reale Gruppenkennung aufgelistet ist | ||
* Hier kann entweder der numerische oder der symbolische Wert verwendet werden | * Hier kann entweder der numerische oder der symbolische Wert verwendet werden | ||
|- | |- | ||
Zeile 77: | Zeile 78: | ||
| -P || --parent || Eltern-Prozesskennung, … || sucht nur nach Prozessen, von denen die Kennung des übergeordneten Prozesses aufgelistet ist | | -P || --parent || Eltern-Prozesskennung, … || sucht nur nach Prozessen, von denen die Kennung des übergeordneten Prozesses aufgelistet ist | ||
|- | |- | ||
| -s || --session || Sitzungskennung, … || sucht nur nach passenden Prozessen, die in den Prozess-Sitzungskennungen aufgelistet ist | | -s || --session || Sitzungskennung, … || sucht nur nach passenden Prozessen, die in den Prozess-Sitzungskennungen aufgelistet ist | ||
* Die Sitzungskennung 0 wird in die eigene Prozessgruppe von pgrep, pkill oder pidwait übersetzt | * Die Sitzungskennung 0 wird in die eigene Prozessgruppe von pgrep, pkill oder pidwait übersetzt | ||
|- | |- | ||
| -t || --terminal || Terminal, … || sucht nur nach passenden Prozessen, deren steuerndes Terminal aufgelistet ist | | -t || --terminal || Terminal, … || sucht nur nach passenden Prozessen, deren steuerndes Terminal aufgelistet ist | ||
* Der Terminalname sollte ohne das Präfix »dev« angegeben werden | * Der Terminalname sollte ohne das Präfix »dev« angegeben werden | ||
|- | |- | ||
| -u || --euid || effektive_Benutzerkennung, … || sucht nur nach passenden Prozessen, deren effektive Benutzerkennung aufgelistet ist | | -u || --euid || effektive_Benutzerkennung, … || sucht nur nach passenden Prozessen, deren effektive Benutzerkennung aufgelistet ist | ||
* Sie können entweder numerische oder symbolische Werte verwenden | * Sie können entweder numerische oder symbolische Werte verwenden | ||
|- | |- | ||
| -U || --uid || Benutzerkennung, … || sucht nur nach passenden Prozessen, deren reale Benutzerkennung aufgelistet ist | | -U || --uid || Benutzerkennung, … || sucht nur nach passenden Prozessen, deren reale Benutzerkennung aufgelistet ist | ||
* Sie können entweder numerische oder symbolische Werte verwenden | * Sie können entweder numerische oder symbolische Werte verwenden | ||
|- | |- | ||
| -v || --inverse || || negiert die Anwendung der Suchkriterien | | -v || --inverse || || negiert die Anwendung der Suchkriterien | ||
* Diese Option wird üblicherweise mit pgrep oder pidwait verwendet | * Diese Option wird üblicherweise mit pgrep oder pidwait verwendet | ||
* In pkill ist die Kurzoption deaktiviert, um die zufällige Anwendung dieser Option zu vermeiden | * In pkill ist die Kurzoption deaktiviert, um die zufällige Anwendung dieser Option zu vermeiden | ||
|- | |- | ||
| -w || --lightweight || || zeigt bei pgrep oder pidwait alle Thread-Kennungen anstelle der Prozess-Kennungen an | | -w || --lightweight || || zeigt bei pgrep oder pidwait alle Thread-Kennungen anstelle der Prozess-Kennungen an | ||
* In pkill ist diese Option deaktiviert | * In pkill ist diese Option deaktiviert | ||
|- | |- | ||
| -x || --exact || || sucht nur nach passenden Prozessen, deren Namen (oder Befehlszeilen, falls -f angegeben ist) exakt dem Muster entsprechen | | -x || --exact || || sucht nur nach passenden Prozessen, deren Namen (oder Befehlszeilen, falls -f angegeben ist) exakt dem Muster entsprechen | ||
|- | |- | ||
| -F || --pidfile || Datei || liest die Prozesskennungen aus einer Datei | | -F || --pidfile || Datei || liest die Prozesskennungen aus einer Datei | ||
* Diese Option ist eher für pkill oder pidwait als für pgrep sinnvoll | * Diese Option ist eher für pkill oder pidwait als für pgrep sinnvoll | ||
|- | |- | ||
Zeile 105: | Zeile 106: | ||
| -r || --runstates || D,R,S,Z, … || sucht nur nach Prozessen, die diesem Prozessstatus entsprechen | | -r || --runstates || D,R,S,Z, … || sucht nur nach Prozessen, die diesem Prozessstatus entsprechen | ||
|- | |- | ||
| -A || --ignore || || -ancestors ignoriert alle Vorgänger von pgrep, pkill oder pidwait | | -A || --ignore || || -ancestors ignoriert alle Vorgänger von pgrep, pkill oder pidwait | ||
* Dies kann beispielsweise in Verbindung mit sudo oder ähnlichen Werkzeugen nützlich sein | * Dies kann beispielsweise in Verbindung mit sudo oder ähnlichen Werkzeugen nützlich sein | ||
|- | |- | ||
| -H || --require || || -handler sucht nur nach Prozessen, für die für das zu sendende Signal ein Userspace-Signalhandler vorhanden ist | | -H || --require || || -handler sucht nur nach Prozessen, für die für das zu sendende Signal ein Userspace-Signalhandler vorhanden ist | ||
|- | |- | ||
| || --cgroup || Name,… || Match on provided control group (cgroup) v2 name | | || --cgroup || Name,… || Match on provided control group (cgroup) v2 name | ||
* See cgroups(8) | * See cgroups(8) | ||
|- | |- | ||
| || --ns || Prozesskennung || sucht nach passenden Prozessen, die zu den gleichen Namensräumen gehören | | || --ns || Prozesskennung || sucht nach passenden Prozessen, die zu den gleichen Namensräumen gehören | ||
* Um Prozesse anderer Benutzer zu finden, sind Root-Rechte erforderlich | * Um Prozesse anderer Benutzer zu finden, sind Root-Rechte erforderlich | ||
* In --nslist finden Sie Informationen, wie Sie die Übereinstimmungen im Zusammenhang mit Namensräumen begrenzen können | * In --nslist finden Sie Informationen, wie Sie die Übereinstimmungen im Zusammenhang mit Namensräumen begrenzen können | ||
|- | |- | ||
| || --nslist || Name, … || sucht nur in den angegebenen Namensräumen nach Übereinstimmungen | | || --nslist || Name, … || sucht nur in den angegebenen Namensräumen nach Übereinstimmungen | ||
* Verfügbare Namensräume: ipc, mnt, net, pid, user, uts | * Verfügbare Namensräume: ipc, mnt, net, pid, user, uts | ||
|- | |- | ||
| -q || --queue || Wert || verwendet sigqueue(3) anstatt kill(2) und das Wert-Argument wird zur Angabe einer Ganzzahl verwendet, die mit dem Signal gesendet wird | | -q || --queue || Wert || verwendet sigqueue(3) anstatt kill(2) und das Wert-Argument wird zur Angabe einer Ganzzahl verwendet, die mit dem Signal gesendet wird | ||
* Falls der empfangende Prozess mit dem SA_SIGINFO-Flag für sigaction(2) einen Handler für dieses Signal installiert hat, dann kann er diese Daten über das si_value-Feld der Struktur siginfo_t beziehen | * Falls der empfangende Prozess mit dem SA_SIGINFO-Flag für sigaction(2) einen Handler für dieses Signal installiert hat, dann kann er diese Daten über das si_value-Feld der Struktur siginfo_t beziehen | ||
|- | |- | ||
Zeile 136: | Zeile 137: | ||
! Wert !! Beschreibung | ! Wert !! Beschreibung | ||
|- | |- | ||
| 0 || Einer oder mehrere Prozesse entsprechen dem Kriterium | | 0 || Einer oder mehrere Prozesse entsprechen dem Kriterium | ||
* Für pkill und pidwait muss auch ein Signal erfolgreich an einen oder mehrere Prozesse gesendet oder auf sie gewartet worden sein | * Für pkill und pidwait muss auch ein Signal erfolgreich an einen oder mehrere Prozesse gesendet oder auf sie gewartet worden sein | ||
|- | |- | ||
Zeile 143: | Zeile 144: | ||
| 2 || Syntaxfehler in der Befehlszeile | | 2 || Syntaxfehler in der Befehlszeile | ||
|- | |- | ||
| 3 || Schwerwiegender Fehler: Speicher ausgeschöpft usw | | 3 || Schwerwiegender Fehler: Speicher ausgeschöpft usw | ||
|} | |} | ||
Zeile 170: | Zeile 171: | ||
; Anmerkung | ; Anmerkung | ||
<blockquote> | <blockquote> | ||
Der für die Suche verwendete Prozessname ist auf die 15 Zeichen in der Ausgabe von /proc/Prozesskennung/stat beschränkt | Der für die Suche verwendete Prozessname ist auf die 15 Zeichen in der Ausgabe von /proc/Prozesskennung/stat beschränkt | ||
* Verwenden Sie die Option -f, um stattdessen Übereinstimmungen in der gesamten Befehlszeile (/proc/Prozesskennung/cmdline) zu suchen | * Verwenden Sie die Option -f, um stattdessen Übereinstimmungen in der gesamten Befehlszeile (/proc/Prozesskennung/cmdline) zu suchen | ||
* Threads könnten nicht den gleichen Prozessnamen wie der Elternprozess haben, wohl aber die gleiche Befehlszeile | * Threads könnten nicht den gleichen Prozessnamen wie der Elternprozess haben, wohl aber die gleiche Befehlszeile | ||
</blockquote> | </blockquote> | ||
Die laufenden pgrep-, pkill- oder pidwait-Prozesse werden niemals selbst als Treffer gemeldet | Die laufenden pgrep-, pkill- oder pidwait-Prozesse werden niemals selbst als Treffer gemeldet | ||
Die Option -O --older wird stillschweigend fehlschlagen, falls /proc mit der Option subset=pid eingehängt ist | Die Option -O --older wird stillschweigend fehlschlagen, falls /proc mit der Option subset=pid eingehängt ist | ||
* Die Optionen -n, -o und -v können nicht kombiniert werden | * Die Optionen -n, -o und -v können nicht kombiniert werden | ||
* Bitte informieren Sie die Entwickler, falls das für Ihre Zwecke nötig sein sollte | * Bitte informieren Sie die Entwickler, falls das für Ihre Zwecke nötig sein sollte | ||
* Bereits beendete Prozesse werden gemeldet | * Bereits beendete Prozesse werden gemeldet |
Version vom 31. März 2025, 11:00 Uhr
pgrep - pgrep, pkill, pidwait - Prozesse finden oder ein Signal auf Basis des Namens oder anderer Attribute senden oder auf Prozesse warten
Beschreibung
pgrep
Durchsucht die gegenwärtig laufenden Prozesse und listet die Prozesskennungen (IDs), welche den Auswahlkriterien entsprechen, in der Standardausgabe auf
- Übereinstimmungen sind für alle Auswahlkriterien erforderlich
- Beispiel 1
Prozesse, deren Name sshd lautet UND root gehören
pgrep -u root sshd
- Beispiel 2
Prozesse, die entweder root ODER daemon gehören
$ pgrep -u root,daemon
pkill
Sendet Signal (per Vorgabe SIGTERM) an passende Prozesse, anstatt diese in der Standardausgabe aufzulisten
pidwait
Wartet auf passende Prozesse, anstatt diese in der Standardausgabe aufzulisten
Installation
Aufruf
pgrep [Optionen] Muster
pkill [Optionen] Muster
pidwait [Optionen] Muster
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
-Signal | --signal | Signal | definiert das Signal, das an jeden der passenden Prozesse gesendet werden soll
|
-c | --count | unterdrückt normale Ausgaben und gibt stattdessen die Anzahl der passenden Prozesse aus
| |
-d | --delimiter | Trenner | legt die in der Ausgabe als Trenner für die Prozesskennungen zu verwendende Zeichenkette fest
|
-e | --echo | zeigt Name und Prozesskennung des zu killenden Prozesses an (nur für pkill) | |
-f | --full | Das Muster wird normalerweise nur auf den Prozessnamen angewendet
| |
-g | --pgroup | Prozessgruppe, … | sucht nur nach passenden Prozessen, die in den Prozessgruppenkennungen aufgelistet sind
|
-G | --group | Gruppenkennung, … | berücksichtigt nur Prozesse, deren reale Gruppenkennung aufgelistet ist
|
-i | --ignore | -case ignoriert Groß-/Kleinschreibung bei der Suche | |
-l | --list | -name listet sowohl den Prozessnamen als auch die Prozesskennung auf (nur für pgrep) | |
-a | --list | -full listet sowohl die vollständige Befehlszeile als auch die Prozesskennung auf (nur für pgrep) | |
-n | --newest | wählt nur den neuesten (zuletzt gestarteten) aus den passenden Prozessen aus | |
-o | --oldest | wählt nur den ältesten (zuerst gestarteten) aus den passenden Prozessen aus | |
-O | --older | Sekunden | wählt Prozesse aus, die älter als die angegebene Anzahl Sekunden sind |
-P | --parent | Eltern-Prozesskennung, … | sucht nur nach Prozessen, von denen die Kennung des übergeordneten Prozesses aufgelistet ist |
-s | --session | Sitzungskennung, … | sucht nur nach passenden Prozessen, die in den Prozess-Sitzungskennungen aufgelistet ist
|
-t | --terminal | Terminal, … | sucht nur nach passenden Prozessen, deren steuerndes Terminal aufgelistet ist
|
-u | --euid | effektive_Benutzerkennung, … | sucht nur nach passenden Prozessen, deren effektive Benutzerkennung aufgelistet ist
|
-U | --uid | Benutzerkennung, … | sucht nur nach passenden Prozessen, deren reale Benutzerkennung aufgelistet ist
|
-v | --inverse | negiert die Anwendung der Suchkriterien
| |
-w | --lightweight | zeigt bei pgrep oder pidwait alle Thread-Kennungen anstelle der Prozess-Kennungen an
| |
-x | --exact | sucht nur nach passenden Prozessen, deren Namen (oder Befehlszeilen, falls -f angegeben ist) exakt dem Muster entsprechen | |
-F | --pidfile | Datei | liest die Prozesskennungen aus einer Datei
|
-L | --logpidfile | schlägt fehl, wenn die PID-Datei (siehe -F) nicht gesperrt ist | |
-r | --runstates | D,R,S,Z, … | sucht nur nach Prozessen, die diesem Prozessstatus entsprechen |
-A | --ignore | -ancestors ignoriert alle Vorgänger von pgrep, pkill oder pidwait
| |
-H | --require | -handler sucht nur nach Prozessen, für die für das zu sendende Signal ein Userspace-Signalhandler vorhanden ist | |
--cgroup | Name,… | Match on provided control group (cgroup) v2 name
| |
--ns | Prozesskennung | sucht nach passenden Prozessen, die zu den gleichen Namensräumen gehören
| |
--nslist | Name, … | sucht nur in den angegebenen Namensräumen nach Übereinstimmungen
| |
-q | --queue | Wert | verwendet sigqueue(3) anstatt kill(2) und das Wert-Argument wird zur Angabe einer Ganzzahl verwendet, die mit dem Signal gesendet wird
|
-V | --version | zeigt Versionsinformationen an und beendet das Programm | |
-h | --help | zeigt eine Hilfe an und beendet das Programm |
Argumente
- OPERANDEN
Muster gibt einen erweiterten regulären Ausdruck für die Übereinstimmungen von Prozessnamen oder Befehlszeilen an
Exit-Status
Wert | Beschreibung |
---|---|
0 | Einer oder mehrere Prozesse entsprechen dem Kriterium
|
1 | Es wurden keine passenden Prozesse gefunden oder an keine von ihnen konnte ein Signal gesendet werden |
2 | Syntaxfehler in der Befehlszeile |
3 | Schwerwiegender Fehler: Speicher ausgeschöpft usw |
Anwendung
- Prozesskennung des named-Daemons suchen
pgrep -u root named
- syslog veranlassen, seine Konfigurationsdatei neu einzulesen
pkill -HUP syslogd
- Detaillierte Informationen zu allen xterm-Prozessen ausgeben
ps -fp $(pgrep -d, -x xterm)
- Den Nice-Wert für alle chrome-Prozesse erhöhen
renice +4 $(pgrep chrome)
Problembehebung
- Anmerkung
Der für die Suche verwendete Prozessname ist auf die 15 Zeichen in der Ausgabe von /proc/Prozesskennung/stat beschränkt
- Verwenden Sie die Option -f, um stattdessen Übereinstimmungen in der gesamten Befehlszeile (/proc/Prozesskennung/cmdline) zu suchen
- Threads könnten nicht den gleichen Prozessnamen wie der Elternprozess haben, wohl aber die gleiche Befehlszeile
Die laufenden pgrep-, pkill- oder pidwait-Prozesse werden niemals selbst als Treffer gemeldet
Die Option -O --older wird stillschweigend fehlschlagen, falls /proc mit der Option subset=pid eingehängt ist
- Die Optionen -n, -o und -v können nicht kombiniert werden
- Bitte informieren Sie die Entwickler, falls das für Ihre Zwecke nötig sein sollte
- Bereits beendete Prozesse werden gemeldet
- pidwait erfordert den Systemaufruf pidfd_open(2), der zuerst in Linux 5.3 erschien
Anhang
Siehe auch
Dokumentation
- Man-Page
- PGREP(1) Dienstprogramme für Benutzer PGREP(1)
- ps(1)
- regex(7)
- signal(7)
- sigqueue(3)
- killall(1)
- skill(1)
- kill(1)
- kill(2)
- cgroups(8)
- Info-Page
Links
Projekt
Weblinks