Linux killall Befehl für Anfänger (8 Beispiele)

Wir haben bereits den kill-Befehl besprochen, den du verwenden kannst, falls du Prozesse unter Linux beenden willst. Es gibt jedoch ein weiteres Befehlszeilenprogramm, das Sie für den gleichen Zweck verwenden können: killall. In diesem Tutorial werden wir die Grundlagen dieses Befehls anhand einiger leicht verständlicher Beispiele diskutieren.

Aber bevor wir das tun, ist es erwähnenswert, dass alle in diesem Tutorial enthaltenen Beispiele auf Ubuntu 16.04 LTS getestet wurden.

Linux killall Befehl

Mit dem Befehl killall können Sie Prozesse mit dem Namen töten. Es folgt die Syntax des Tools:

killall [OPTIONS] name

Und so erklärt die Man Page das Tool:

killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent. Signals can be specified either by name (e.g.  -HUP or -SIGHUP) or by number (e.g.  -1) or by option -s.

If  the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be  selected for killing, independent of their name.

killall returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the -u and -Z search criteria. killall returns non-zero otherwise.

A killall process never kills itself (but may kill other  killall  processes).

Die folgenden Beispiele im Q&A-Stil sollen Ihnen eine bessere Vorstellung davon vermitteln, wie der Befehl killall funktioniert.

Q1. Wie verwendet man den Befehl killall?

Die grundlegende Verwendung des Tools ist sehr einfach – alles, was Sie tun müssen, ist, den Namen des Prozesses als Argument zu übergeben, um zu töten. Zum Beispiel, um den gthumb-Prozess zu beenden, der auf meinem System lief, habe ich killall auf folgende Weise verwendet:

killall gthumb

Beachten Sie, dass Sie, falls Sie den genauen Namen des Prozesses nicht kennen, den Befehl ps verwenden können, um diese Informationen abzurufen.

Q2. Ist die Groß-/Kleinschreibung bei Killall relevant?

Ja, das ist es. Es wird der Fehler’no process found‘ ausgegeben, wenn der Benutzer den Prozessnamen nicht im richtigen Fall schreibt. Nachfolgend ein Beispiel:

Ist killall case-sensitiv?

Wenn du jedoch willst, kannst du killall zwingen, Groß-/Kleinschreibung zu ignorieren, indem du die Befehlszeilenoption -I verwendest.

Töten ignorieren Fall ignorieren

Q3. Wie kann man killall fragen lassen, bevor man den Prozess beendet?

Angenommen, Sie möchten, dass der Befehl killall nach Benutzerberechtigungen fragt, bevor er einen Prozess beendet, dann können Sie die Befehlszeilenoption -i verwenden. Dadurch wird die Killall-Operation interaktiv.

Zum Beispiel:

Wie man Killall fragen lässt, bevor man den Prozess beendet.

Q4. Wie wählt man das Signal aus, das killall an den Prozess sendet?

Standardmäßig ist es das SIGTERM-Signal, das killall an Prozesse sendet. Sie können aber auch andere Signale senden. Sie können die Optionen -s, –signal und -SIGNAL verwenden, um diese anderen Signale zu senden.

Damit dies jedoch funktioniert, müssen Sie wissen, welche Signale der Befehl killall senden kann. Dies kannst du mit der Kommandozeilenoption -l tun.

killall -l

Nachfolgend ist die Liste der oben genannten Befehle aufgeführt, die auf unserem System erzeugt wurden:

Wie wählt man das Signal aus, das killall an den Prozess sendet?

Q5. Wie kann man verhindern, dass sich killall beschwert, wenn ein bestimmter Prozess nicht existiert?

Wenn der Prozess, dessen Name an killall übergeben wird, nicht läuft (existiert nicht), dann übermittelt das Tool dies dem Benutzer in der Ausgabe.

verhindern, dass sich killall beschwert, wenn der angegebene Prozess nicht existiert.

Wenn Sie jedoch nicht möchten, dass das Tool eine solche Ausgabe erzeugt, können Sie die Befehlszeilenoption -q verwenden.

killall -q Kommandooption

So kannst du sehen, dass der killall-Befehl ruhig blieb, als -q verwendet wurde.

Q6. Wie kann man alle Prozesse, die einem Benutzer gehören, beenden?

Wenn die Anforderung darin besteht, alle Prozesse zu beenden, die einem bestimmten Benutzer gehören, dann können Sie die Option -u von killall verwenden. Unnötig zu sagen, dass Sie bei dieser Option den Benutzernamen für den Benutzer als Eingabe angeben müssen.

killall -u [user-name]

Zum Beispiel:

killall -u himanshu

Q7. Wie kann man Prozesse zeitbasiert beenden?

Angenommen, Sie wollen alle Prozesse beenden, die nun seit mehr als 5 Stunden laufen, dann können Sie dies mit der Option -o wie folgt tun:

killall -o 5h

Natürlich können Sie auch Prozessnamen angeben, wenn Sie nicht alle Prozesse beenden wollen. Wenn Sie Prozesse beenden möchten, die beispielsweise weniger als 4 Stunden alt sind, können Sie dies mit der Befehlszeilenoption -y tun.

killall -y 4h

So erklärt die Man Page diese Optionen:

-o, --older-than
              Match only processes that are older (started  before)  the  time
              specified.   The  time is specified as a float then a unit.  The
              units are  s,m,h,d,w,M,y  for  seconds,  minutes,  hours,  days,
              weeks, Months and years respectively.

-y, –younger-than
Match  only  processes that are younger (started after) the time
specified.  The time is specified as a float then a  unit.   The
units  are  s,m,h,d,w,M,y  for  seconds,  minutes,  hours, days,
weeks, Months and years respectively.

Q8. Wie kann sichergestellt werden, dass killall nur dann zurückkehrt, wenn Prozesse sterben?

Nachdem das Signal von killall an den Prozess geliefert wurde, wenn Sie sicherstellen möchten, dass der Befehl erst nach dem Prozess stirbt, können Sie dies mit der Befehlszeilenoption -w tun, die killall zum Warten zwingt.

killall -w [process-name]

So beschreibt die Man Page diese Option:

-w, --wait
              Wait  for  all killed processes to die.  killall checks once per
              second if any of the  killed  processes  still  exist  and  only
              returns if none are left.  Note that killall may wait forever if
              the signal was ignored, had no effect, or if the  process  stays
              in zombie state.

Fazit

Killall ist vielleicht kein Kinderspiel für Anfänger, aber es ist auch nicht sehr komplex. Du musst die Befehlszeilenoptionen, die es bietet, üben. Wir haben die meisten von ihnen diskutiert, daher sollte dieses Tutorial ein guter Ausgangspunkt sein. Sobald du mit diesen fertig bist, kannst du mehr über den Befehl lesen, indem du zu seiner Manpage gehst.

Das könnte Dich auch interessieren …