pgrep, pkill, pidwait - Prozesse finden oder ein Signal auf Basis
des Namens oder anderer Attribute senden oder auf Prozesse warten
ÜBERSICHT
pgrep [Optionen] Muster
pkill [Optionen] Muster
pidwait [Optionen] Muster
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. Beispielsweise listet
- $ pgrep -u root sshd
nur die Prozesse auf, deren Name sshd lautet UND
root gehören. Andererseits listet
- $ pgrep -u root,daemon
jene Prozesse auf, die entweder root ODER daemon
gehören.
pkill sendet das angegebene Signal (per Vorgabe
SIGTERM) an jeden Prozess, anstatt diese in der Standardausgabe
aufzulisten.
pidwait wartet auf jeden Prozess, anstatt diesen in der
Standardausgabe aufzulisten.
- -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. 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.
- -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.
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. Vorgabe ist ein Zeilenumbruch (gilt nur
für pgrep).
- -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.
Wenn -f gesetzt ist, wird die vollständige Befehlszeile
verwendet.
- -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.
- -G, --group
Gruppenkennung, …
- berücksichtigt nur Prozesse, deren reale Gruppenkennung aufgelistet
ist. Hier kann entweder der numerische oder der symbolische Wert verwendet
werden.
- -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. 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. Der Terminalname sollte ohne das Präfix »dev«
angegeben werden.
- -u, --euid
effektive_Benutzerkennung, …
- sucht nur nach passenden Prozessen, deren effektive Benutzerkennung
aufgelistet ist. Sie können entweder numerische oder symbolische
Werte verwenden.
- -U, --uid
Benutzerkennung, …
- sucht nur nach passenden Prozessen, deren reale Benutzerkennung
aufgelistet ist. Sie können entweder numerische oder symbolische
Werte verwenden.
- -v, --inverse
- negiert die Anwendung der Suchkriterien. Diese Option wird
üblicherweise mit pgrep oder pidwait verwendet. 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. 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.
- -F, --pidfile
Datei
- liest die Prozesskennungen aus einer Datei. Diese Option ist
eher für pkill oder pidwait als für
pgrep sinnvoll.
- -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. 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.
- --cgroup
Name,…
- Match on provided control group (cgroup) v2 name. See
cgroups(8)
- --ns
Prozesskennung
- sucht nach passenden Prozessen, die zu den gleichen Namensräumen
gehören. 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.
- --nslist
Name, …
- sucht nur in den angegebenen Namensräumen nach
Übereinstimmungen. 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. 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.
- -V, --version
- zeigt Versionsinformationen an und beendet das Programm.
- -h, --help
- zeigt eine Hilfe an und beendet das Programm.
- Muster
- gibt einen erweiterten regulären Ausdruck für die
Übereinstimmungen von Prozessnamen oder Befehlszeilen an.
Beispiel 1: Prozesskennung des named-Daemons suchen:
- $ pgrep -u root named
Beispiel 2: syslog veranlassen, seine Konfigurationsdatei
neu einzulesen:
- $ pkill -HUP syslogd
Beispiel 3: Detaillierte Informationen zu allen
xterm-Prozessen ausgeben:
- $ ps -fp $(pgrep -d, -x xterm)
Beispiel 4: Den Nice-Wert für alle chrome-Prozesse
erhöhen:
- $ renice +4 $(pgrep chrome)
- 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.
- 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.
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.
ps(1), regex(7), signal(7),
sigqueue(3), killall(1), skill(1), kill(1),
kill(2), cgroups(8)