Wenn Sie unter Linux einen Prozess (aus welchen Gründen auch immer) über die Befehlszeile beenden müssen, können Sie den Befehl kill verwenden, der erfordert, dass Sie die ID des Prozesses, den Sie beenden möchten, als Eingabe übergeben. Aber wussten Sie, dass es auch eine Möglichkeit gibt, Prozesse zu beenden, ohne ihre PIDs anzugeben?
Ja, es gibt ein Tool namens pkill - damit können Sie dies tun. In diesem Artikel werden wir die Grundlagen dieses Befehls anhand einiger leicht verständlicher Beispiele erörtern. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele hier auf einem Ubuntu 18.04 LTS- und Debian 10-Rechner getestet wurden.
Linux-pkill-Befehl
Der Befehl pkill in Linux ist im Grunde eine einfachere Möglichkeit, Prozesse zu beenden. Es folgt die Syntax:
pkill [options] pattern
Und hier ist, was die Manpage über dieses Tool sagt:
pkill - signal processes based on name and other attributes
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine noch bessere Vorstellung davon vermitteln sollen, wie der Befehl pkill funktioniert.
Q1. Wie verwende ich den Befehl pkill?
Die grundlegende Verwendung ist ziemlich einfach - alles, was Sie tun müssen, ist, 'pkill' mit dem Prozessnamen als Eingabe auszuführen.
Wenn Sie beispielsweise versuchen, den 'gedit'-Prozess zu beenden, können Sie dies mit pkill auf folgende Weise tun:
pkill gedit
Das ist es. Sie werden sehen, dass der Gedit-Prozess (falls er läuft) bei der Ausführung des oben genannten Befehls beendet wird.
Q2. Wie kann man pkill dazu bringen, ein anderes Signal zu senden?
Wie bereits am Anfang dieses Artikels erwähnt, sendet der pkill-Befehl grundsätzlich ein Signal an den Prozess. Standardmäßig wird das SIGTERM-Signal gesendet, aber wenn Sie möchten, können Sie das Signal mit der Befehlszeilenoption --signal ändern.
Zum Beispiel:
pkill --signal SIGKILL
gedit
Q3. Wie beendet man Prozesse basierend auf der vollständigen Befehlszeile?
Standardmäßig wird der Eingabename (Muster) mit dem Prozessnamen abgeglichen. Wenn Sie möchten, können Sie stattdessen pkill mit der vollständigen Befehlszeile abgleichen. Dies kann mit der Befehlszeilenoption -f erfolgen.
Angenommen, auf meinem System werden zwei Ping-Befehle ausgeführt. Es folgt ein Auszug aus der Ausgabe des Befehls ps:
...
root 19253 0.0 0.1 9180 2916 pts/1 S+ 19:24 0:00 ping google.com
root 19331 0.0 0.1 9180 2912 pts/2 S+ 19:25 0:00 ping howtoforge.com
...
Angenommen, die Anforderung besteht darin, nur den Befehl „ping google.com“ mit pkill zu beenden.
Wenn Sie pkill folgendermaßen verwenden:
pkill ping
dann werden beide Befehle getötet. Um dies zu vermeiden, können wir die Befehlszeilenoption -f verwenden. So kann es verwendet werden:
pkill -f "ping google.com"
Ich habe den Befehl im ersten Terminalfenster ausgeführt:
Ergebnis im zweiten Terminalfenster, in dem der Ping-Prozess lief:
Wenn also der oben genannte Befehl ausgeführt wurde, wurde nur der als Eingabe erwähnte Befehl getötet.
Q4. Wie macht man pkill Groß-/Kleinschreibung unempfindlich?
Standardmäßig unterscheidet der Befehl pkill zwischen Groß- und Kleinschreibung, d. h. er behandelt Namen in Groß- und Kleinschreibung unterschiedlich. Wenn Sie jedoch möchten, können Sie pkill dazu zwingen, Groß- und Kleinschreibung zu ignorieren, was Sie mit der Befehlszeilenoption -i tun können.
pkill -i [process-name]
F5. Wie kann man Syslog dazu bringen, seine Konfigurationsdatei mit pkill neu zu lesen?
Dazu können Sie den Befehl pkill wie folgt verwenden:
pkill -HUP syslogd
Schlussfolgerung
pkill ist also ein äußerst nützlicher Befehl, wenn es darum geht, Prozesse zu beenden. Wir haben bereits einige der Befehlszeilenoptionen besprochen, die dieser Befehl bietet. Sobald Sie diese geübt haben, können Sie mehr über den Befehl erfahren, indem Sie zu seiner Manpage gehen.