Müssen Sie einen laufenden Prozess beenden? Der Kill-Befehl in Linux ist genau dafür gebaut. Kein Betriebssystem ist perfekt. Daher ist es üblich, dass Ihr Linux-System gelegentlich mit nicht reagierenden Prozessen zu kämpfen hat.
Um mit Fällen fertig zu werden, in denen wir einen Prozess beenden müssen, verwenden wir den Kill-Befehl in Linux.
In diesem Tutorial werden wir verstehen, wie der Kill-Befehl funktioniert. Später werden wir versuchen, den Kill-Befehl für unsere Anforderungen zu verwenden.
Grundlagen des Kill-Befehls
Es gibt mehrere Dienstprogramme, die einem Linux-Benutzer helfen, Prozesse zu beenden, die sich möglicherweise nicht korrekt verhalten. Eines der am häufigsten verwendeten Dienstprogramme für diesen Zweck ist der Kill-Befehl in Linux.
Der Kill-Befehl in Linux wird verwendet, um einen Prozess manuell über die Befehlszeile zu beenden. Es ist ein in die Shell integriertes Dienstprogramm für die meisten von der Bourne-Shell abgeleiteten Shells wie bash.
Die Optionen für die in Bash integrierte Version des Kill-Befehls in Linux unterscheiden sich geringfügig von der eigenständigen ausführbaren Datei in /bin/kill.
Für dieses Tutorial verwenden wir jedoch die in Bash integrierte Version des Kill-Befehls. Um alle Speicherorte zu überprüfen, die den Kill-Befehl auf Ihrem System enthalten, geben Sie den folgenden Befehl in Ihr Terminal ein.
root@ubuntu:~# type -a kill kill is a shell builtin kill is /bin/kill
Sie sollten eine Ausgabe ähnlich dem obigen Screenshot erhalten. Diese Ausgabe bestätigt, dass die Shell-integrierte Version des Kill-Befehls Vorrang vor seiner eigenständigen ausführbaren Datei hat.
Daher führt die Verwendung des Befehls kill die in Bash integrierte Version aus. Sie können die ausführbare Datei verwenden, indem Sie den vollständigen Pfad für den Befehl als /bin/kill/ verwenden. Wir werden jedoch mit der in Bash integrierten Version des Kill-Befehls fortfahren.
Kill-Befehl unter Linux
Der beste Weg, einen Befehl zu verstehen, besteht darin, seine Syntax zu verstehen. So sieht die Syntax für den Kill-Befehl unter Linux aus.
kill [option] PID
Der Befehl kill wird verwendet, um ein Signal an einen Prozess zu senden. Dieses Signal wird durch die Option bestimmt, die beim Aufruf des Kill-Befehls verwendet wird.
Prozessbeendigungssignale mit dem kill-Befehl
Obwohl es eine Vielzahl von Optionen zur Auswahl gibt, haben wir hier die am häufigsten verwendeten in der folgenden Tabelle aufgelistet.
Option | Signalnummer | Aktion |
SIGTERM | 15 | Das SIGTERM-Signal wird verwendet, um einem Prozess mitzuteilen, dass er ordnungsgemäß enden soll. Dieses Kill-Signal kann vom Prozess interpretiert oder ignoriert werden. |
SIGKILL | 9 | Das Signal SIGKILL wird verwendet, um die Beendigung eines Prozesses zu erzwingen. Es ist ein Signal, das vom Prozess auf keinen Fall ignoriert werden kann. |
SIGHUP | 1 | Das SIGHUP-Signal wird verwendet, um bei einem Prozess aufzulegen. Dies kann verwendet werden, um einen Prozess neu zu starten. |
SIGINT | 2 | Das SIGINT-Signal wird verwendet, wenn der Benutzer einen Prozess unterbrechen möchte. |
Wenn wir die Option nicht angeben, wird die Standardoption für den Kill-Befehl verwendet. Die Standardoption für den Kill-Befehl unter Linux ist SIGTERM. Optionen können im Kill-Befehl auf drei verschiedene Arten verwendet werden.
Über die Signalnummer
kill -9 [PID]
Mit dem Präfix „SIG“
kill -SIGKILL [PID]
Ohne das Präfix „SIG“
kill -KILL [PID]
Was ist die Prozess-ID (PID) bei Verwendung des Kill-Befehls unter Linux?
Weiter zum letzten Parameter, der PID. Die PID bezieht sich auf die Prozess-ID für einen bestimmten Prozess. Immer wenn ein Prozess startet, wird ihm vom Kernel eine eindeutige ID zugewiesen.
Wir verwenden die PID im Kill-Befehl unter Linux, um den Prozess anzugeben, an den wir das Kill-Signal senden möchten.
Die im Kill-Befehl verwendete PID kann einen beliebigen ganzzahligen Wert haben. Hier ist eine Liste mit dem Wert der PID und ihrer Auswirkung auf den Kill-Befehl.
PID-Wert | Auswirkung auf den Kill-Befehl |
PID>0 | Dies sendet das entsprechende Kill-Signal an den Prozess, der als PID gleich der im Befehl genannten PID ist. |
PID=0 | Dies sendet das entsprechende Kill-Signal an alle Prozesse, die unter derselben Gruppe laufen wie der, der den Befehl aufruft. |
PID=-1 | Dies sendet das entsprechende Kill-Signal an alle Prozesse, die unter demselben Benutzer laufen wie der, der den Befehl aufruft. Falls ein solcher Befehl vom Root-Benutzer aufgerufen wird, wird das Kill-Signal an jeden Prozess gesendet, mit Ausnahme des Kill-Prozesses und des Init-Prozesses. |
PID<-1 | Dies sendet das entsprechende Kill-Signal an alle Prozesse, die in einer Gruppe laufen, sodass die Gruppen-ID gleich dem absoluten Wert der im Kill-Befehl verwendeten PID ist. |
Wenn wir die PID eines Prozesses wissen wollen, verwenden wir den folgenden Befehl.
pidof <processname>
Dieser Befehl gibt alle PIDs für den angegebenen Prozess zurück. Mit dieser PID können wir nun das gewünschte Kill-Signal an den Prozess senden.
Mit dem Kill-Befehl
Jetzt haben wir ein Verständnis für den Kill-Befehl in Linux und seine Parameter entwickelt. Jetzt ist es an der Zeit, dieses Wissen zu nutzen, um zwei gängige Operationen durchzuführen, bei denen der Kill-Befehl verwendet wird.
Einen Prozess beenden
Die häufigste Verwendung des Kill-Befehls in Linux ist, wie der Name schon sagt, das Beenden eines Prozesses. Hier werden wir uns dafür entscheiden, die obersten Befehlsprozesse auf unserem System mit dem Befehl kill zu beenden.
Für diese Demonstration habe ich einfach top auf mehreren Shells ausgeführt, um diese Prozesse zu erstellen.
Dazu verwenden wir zunächst den folgenden Befehl, um die PIDs zu finden, die dem obersten Befehlsprozess zugeordnet sind.
pidof top
Jetzt verwenden wir das SIGKILL-Kill-Signal, um alle Prozesse zu beenden, die mit dem obersten Befehl verbunden sind.
Neuladen eines Prozesses
Eine weitere Funktion, die mit dem Kill-Befehl unter Linux möglich ist, ist das Neustarten eines Prozesses. Dies ist hilfreich, falls ein Dienst ausgeführt wird, aber seine Konfigurationsdatei erneut lesen muss, um die letzten Änderungen zu aktivieren.
Wenn Sie beispielsweise den Lighttpd-Serverprozess auf Ihrem System neu laden möchten, können Sie den folgenden Befehl ausführen.
sudo kill -SIGHUP <process ID of Lighttpd>
Schlussfolgerung
Wenn ein Prozess nicht mehr reagiert, gibt es keine Möglichkeit, ihn neu zu starten. Die einzigen verfügbaren Optionen sind, entweder unser System neu zu starten oder den jeweiligen Prozess zu beenden. Wir hoffen, dass Sie durch dieses Tutorial ein gutes Verständnis des Kill-Befehls entwickeln konnten.
Probieren Sie den Kill-Befehl unter Linux selbst aus. Wenn Sie Kommentare, Vorschläge oder Feedback haben, wenden Sie sich bitte über den Kommentarbereich unten an uns.