So beenden Sie einen Prozess anhand des Namens
Wenn Sie einen laufenden Prozess auf einem Linux-System schnell oder zwangsweise schließen müssen, versuchen viele Benutzer, die Prozess-ID zu ermitteln und dann einen Prozess anhand seiner ID zu beenden. Dies funktioniert zwar gut, aber es ist manchmal einfacher oder bequemer, einen Prozess nach Namen zu beenden. Auf diese Weise überspringen wir den Schritt des Nachschlagens der Prozess-ID und lassen unser Terminal die Arbeit für uns erledigen.
In diesem Tutorial erfahren Sie, wie Sie einen Prozess auf einem Linux-System nach Namen beenden. Dies wird durch die Befehle pkill und killall erleichtert, die Prozessnamen als Argument anstelle einer Prozess-ID-Nummer akzeptieren.
In diesem Tutorial lernen Sie:
- Wie man einen Prozess nach Namen mit
killallundpkillbeendet
So beenden Sie einen Prozess anhand des Namens
Es gibt zwei Standardbefehle unter Linux, die einen Prozess anhand des Namens beenden können: killall und pkill. Obwohl beide Befehle das Gleiche bewirken, gehen sie beide etwas unterschiedlich vor.
Schauen wir uns zunächst killall an. Wir müssen den genauen Namen des Prozesses angeben, den wir beenden möchten. Schauen wir uns einige Beispiele dafür an, wie es funktioniert, indem einige Instanzen desselben Bash-Skripts mit nur einem Befehl beendet werden.
killall example.sh
In diesem Fall ist es definitiv viel einfacher, all diese Prozesse mit einem einzigen Befehl zu beenden, als jede PID mit kill angeben zu müssen. killall diskriminiert jedoch nicht und zielt auf alle Instanzen unseres Skripts im Beispiel ab. Wenn wir nur zwei von ihnen hätten töten wollen, dann hätten wir immer noch auf den Befehl kill zurückgreifen müssen.
Der andere Befehl, den wir hätten verwenden können, ist pkill. Dies unterscheidet sich von killall dadurch, dass wir nicht den genauen Namen eines Prozesses angeben müssen. In unserem vorherigen Beispiel könnten wir also alle drei Prozesse von example.sh mit einem Befehl wie diesem beenden:
pkill examp
Wie Sie sich vorstellen können, sollten Sie mit dem Befehl
pkill sehr vorsichtig sein, da Sie leicht einen Prozess beenden könnten, den Sie nicht beabsichtigt haben. Wenn wir zum Beispiel ein anderes Skript example2.sh der Ausführung hätten, hätte der vorherige Befehl es ebenfalls beendet. Manchmal mag dies eine gute Sache sein, aber seien Sie sich bewusst, dass sich der Musterabgleich manchmal auf mehr Prozesse erstrecken kann, als Ihnen bewusst ist. Sie können immer den Befehl pgrep verwenden, um eine Vorschau davon zu erhalten, wie viele Prozesse pkill beenden würde. Verwenden von pgrep, um zu bestimmen, welche Prozesse den Namen haben:
pgrep example
17555
17557
17559
Das pkill-Beispiel würde also drei Prozesse beenden.
Beachten Sie, dass die Befehle killall und pkill die meisten der gleichen Optionen wie der reguläre kill-Befehl akzeptieren. Eine häufig mit kill angegebene Option ist z. B. -9, um ein SIGKILL-Signal an einen Prozess zu senden. Die Syntax funktioniert bei den beiden anderen Befehlen genauso. Siehe das Beispiel unten.
kill -9 1234
killall -9 example.sh
pkill -9 example.sh
Abschließende Gedanken
In diesem Tutorial haben wir gesehen, wie man einen Prozess mit den Befehlen killall und pkill auf einem Linux-System nach Namen beendet. Jeder dieser Befehle verfügt über eine eigene umfangreiche Liste von Optionen, von denen sich viele überschneiden oder auf dem Befehl kill basieren. Dennoch haben die Befehle killall, pkill und kill ihre eigenen Nischen, die sie füllen, und es ist hilfreich, alle drei in Ihrem Linux-Admin-Toolbelt zu haben. Schauen Sie sich die Manpages an, wenn Sie ein Gefühl für ihre fortgeschrittenere Nutzung bekommen möchten.


