Dieser Artikel behandelt die Grundlagen von Linux pkill
Befehl.
pkill
ist ein Befehlszeilendienstprogramm, das basierend auf bestimmten Kriterien Signale an die Prozesse eines laufenden Programms sendet. Die Prozesse können durch ihren vollständigen oder teilweisen Namen, einen Benutzer, der den Prozess ausführt, oder andere Attribute angegeben werden.
Das pkill
Befehl ist ein Teil des procps
(oder procps-ng
)-Paket, das auf fast allen Linux-Distributionen vorinstalliert ist. pkill
ist im Grunde ein Wrapper um den pgrep
Programm, das nur eine Liste der passenden Prozesse ausgibt.
Verwendung des pkill
Befehl #
Die Syntax für pkill
Befehl lautet wie folgt:
pkill [OPTIONS] <PATTERN>
Das passende <PATTERN>
wird mit erweiterten regulären Ausdrücken angegeben.
Wenn es ohne Option aufgerufen wird, pkill
sendet die 15
(TERM
) Signal an die PIDs aller laufenden Programme, die mit dem angegebenen Namen übereinstimmen. Um beispielsweise alle Firefox-Prozesse ordnungsgemäß zu stoppen, würden Sie Folgendes ausführen:
pkill -15 firefox
Der Befehl gibt 0
zurück wenn mindestens ein laufender Prozess mit dem angeforderten Namen übereinstimmt. Andernfalls ist der Exit-Code 1
. Dies kann beim Schreiben von Shell-Skripten nützlich sein.
Um ein anderes Signal an die übereinstimmenden Prozesse zu senden, rufen Sie pkill
auf Befehl mit dem --signal
Option, gefolgt von entweder dem numerischen oder dem symbolischen Signalnamen. Eine andere Möglichkeit, ein Signal zu senden, besteht darin, pkill
auszuführen gefolgt vom Signalnamen oder der Signalnummer mit vorangestelltem Bindestrich (-
).
Verwenden Sie das kill -l
Befehl, um alle verfügbaren Signale aufzulisten.
Die am häufigsten verwendeten Signale sind:
1
(HUP
):um einen Prozess neu zu laden.9
(KILL
):um einen Prozess zu beenden.15
(TERM
):um einen Prozess ordnungsgemäß zu stoppen.
Signale können auf drei verschiedene Arten angegeben werden:
- mit einer Zahl (z. B. -1)
- mit dem Präfix „SIG“ (z. B. -SIGHUP)
- ohne das Präfix „SIG“ (z. B. -HUP).
Um beispielsweise die Nginx-Prozesse neu zu laden, würden Sie Folgendes ausführen:
pkill -HUP nginx
pkill
verwendet reguläre Ausdrücke, um die Prozessnamen abzugleichen. Es ist immer eine gute Idee, pgrep
zu verwenden Befehl, um die übereinstimmenden Prozesse auszudrucken, bevor Signale an sie gesendet werden. Um beispielsweise alle Prozesse aufzulisten, die „ssh“ in ihrem Namen enthalten:
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent
Wenn Sie nur den Prozessen ein Signal senden möchten, deren Namen genau dem Suchmuster entsprechen, würden Sie Folgendes verwenden:
pkill '^ssh$'
Das Caretzeichen (^
)-Zeichen am Anfang der Zeichenfolge und das Dollarzeichen $
Am Ende.
Standardmäßig pkill
stimmt nur mit dem Prozessnamen überein. Wenn -f
Option verwendet wird, vergleicht der Befehl mit vollständigen Argumentlisten. Wenn der Befehl Leerzeichen enthält, zitieren Sie den gesamten Befehl:
pkill -9 -f "ping 8.8.8.8"
Verwenden Sie das -u
Option, um pkill
mitzuteilen Prozesse abgleichen, die von einem bestimmten Benutzer ausgeführt werden:
pkill -u mark
Um mehrere Benutzer anzugeben, trennen Sie ihre Namen durch Kommas:
pkill -u mark,danny
Sie können Optionen und Suchmuster auch kombinieren. Zum Beispiel um KILL
zu senden allen Prozessen signalisieren, die unter dem Benutzer „mark“ laufen und „gnome“ in ihrem Namen enthalten, würden Sie Folgendes eingeben:
pkill -9 -u mark gnome
Um nur die am längsten (ältesten) oder die zuletzt (neuesten) gestarteten Prozesse anzuzeigen, verwenden Sie -n
(für neuste) oder das -o
(für die älteste) Option.
Zum Beispiel, um den zuletzt erstellten Bildschirm zu beenden:
pkill -9 -n screen
Schlussfolgerung #
Das pkill
Der Befehl wird verwendet, um basierend auf verschiedenen Kriterien Signale an laufende Programme zu senden.
Weitere Informationen zu pkill
Befehl, rufen Sie die pkill-Manpage auf oder geben Sie man pkill
ein in Ihrem Terminal.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.