8 Beispiele für die Verwendung des Killall-Befehls zum Beenden von Prozessen in Linux

8 Beispiele für die Verwendung des Killall-Befehls zum Beenden von Prozessen in Linux

Die Linux-Befehlszeile bietet viele Befehle zum Beenden von Prozessen. Sie können beispielsweise einen Prozess beenden, indem Sie dem Kill-Befehl eine PID übergeben. Der Pkill-Befehl verwendet einen regulären Ausdruck als Eingabe, sodass Prozesse beendet werden, die dem Muster entsprechen.

Es gibt jedoch auch einen Befehl namens killall, der standardmäßig genau auf den Argumentnamen passt und die passenden Prozesse beendet. In diesem Artikel besprechen wir einige praktische Anwendungen dieses Befehls.

Standardmäßig sendet der Befehl killall ein SIGTERM-Signal an einen Prozess/eine Gruppe, es ist jedoch auch möglich, über ein Argument ein bestimmtes Signal zu senden.

Nachfolgend stellen wir die acht Verwendungsmöglichkeiten von killall anhand von Beispielen ausführlich vor.

1. Grundlegende Verwendung

Angenommen, wir haben drei laufende Prozesse, nämlich hello1, hello2 und hello3, und möchten nun den Prozess hello1 beenden. Dazu können wir direkt die folgende Methode verwenden:

killall hello1

Die Ergebnisse der Operation sind wie folgt:

[alvin@VM_0_16_centos test]$ ps aux | grep hallo 
alvin 12061 0,0 0,0 4152 344 Punkte/0 S 14:41 0:00 ./hallo1 
alvin 12074 0,0 0,0 4152 344 Punkte/0 S 14:41 0:00 ./hello2 
alvin 12084 0,0 0,0 4152 340 Punkte/0 S 14:41 0:00 ./hello3 
alvin 12089 0,0 0,0 112648 964 Punkte/0 R+ 14:41 0:00 grep --color=auto hallo 
[alvin@VM_0_16_centos test]$ killall hallo1 
[1] Beendet ./hello1 
[alvin@VM_0_16_centos test]$ ps aux | grep hallo 
alvin 12074 0,0 0,0 4152 344 Punkte/0 S 14:41 0:00 ./hello2 
alvin 12084 0,0 0,0 4152 340 Punkte/0 S 14:41 0:00 ./hello3 
alvin 12170 0,0 0,0 112648 964 Punkte/0 R+ 14:42 0:00 grep --color=auto hallo

Wie Sie sehen, wurde der Prozess „hello1“ beendet.

Wir möchten die verbleibenden Hello2- und Hello3-Prozesse auf einmal beenden, das heißt, die Prozesse stapelweise beenden. Dies geht folgendermaßen:

[alvin@VM_0_16_centos test]$ killall hallo* 
hallo: kein Prozess gefunden 
hallo1: kein Prozess gefunden 
hallo.c: kein Prozess gefunden 
[2]- Beendet ./hello2 
[3]+ Beendet ./hello3

Auf diese Weise werden alle Prozesse beendet, die mit „Hello“ beginnen.

2. Beenden Sie einen von einem Benutzer ausgeführten Prozess

Wir können eine Gruppe von Prozessen beenden, die einem regulären Ausdruck entsprechen, und ebenso können wir alle Prozesse beenden, die von einem bestimmten Benutzer ausgeführt werden.

Beispielsweise führt der Benutzer „Harry“ derzeit die folgenden Prozesse aus:

[alvin@VM_0_16_centos test]$ ps aux | grep harry 
root 13675 0,0 0,2 148236 5584 ? Ss 14:55 0:00 sshd: harry [priv] 
harry 13677 0,0 0,1 148236 2944 ? S 14:55 0:00 sshd: harry@pts/1 
root 13678 0,0 0,2 148236 5444 ? Ss 14:55 0:00 sshd: harry [priv] 
harry 13680 0,0 0,1 148236 2252 ? S 14:55 0:00 sshd: harry@notty 
harry 13681 0,0 0,1 53228 2168 ? Ss 14:55 0:00 /usr/libexec/openssh/sftp-server 
harry 13694 0,0 0,1 116436 3252 Punkte/1 Ss+ 14:55 0:00 -bash 
harry 13948 0,0 0,0 4152 344 Punkte/1 S 14:57 0:00 ./hallo1 
harry 13952 0,0 0,0 4152 344 Punkte/1 S 14:57 0:00 ./hallo2 
harry 13959 0,0 0,0 4152 344 Punkte/1 S 14:57 0:00 ./hallo3 
alvin 14005 0,0 0,0 112648 964 Punkte/0 R+ 14:58 0:00 grep --color=auto harry

Wir möchten nun alle von Harry ausgeführten Prozesse beenden. Dies geht folgendermaßen:

killall -u harry

Die Ergebnisse sind wie folgt:

[alvin@VM_0_16_centos test]$ sudo killall -u harry 
[alvin@VM_0_16_centos test]$ ps aux | grep harry 
alvin 14040 0,0 0,0 112648 964 Punkte/0 R+ 14:58 0:00 grep --color=auto harry

Allerdings sollte diese Option mit Vorsicht verwendet werden, da sie alle Prozesse des Benutzers, einschließlich der Terminalprozesse, beendet und den Benutzer zum direkten Beenden veranlasst. Probieren Sie diese Option also nicht leichtfertig aus, wenn Sie nicht geschlagen werden möchten.

3. Beenden Sie den Vorgang am Ende der Zeit

Wenn wir jetzt viele Programme ausführen und nur die Prozesse beenden möchten, die seit mehr als 5 Stunden laufen, können wir die Option -o verwenden, wobei o für „older“ (älter) steht, und zwar wie folgt:

killall -o 5h

Wenn Sie Prozesse beenden möchten, die seit weniger als 4 Stunden ausgeführt werden, können Sie die Option -y (y steht für „younger“) wie folgt verwenden:

killall -y 4h

Diese beiden Optionen sind ebenfalls sehr grob und beenden das Terminal. Daher werde ich sie jetzt nicht vorführen.

4. Groß-/Kleinschreibung ignorieren

Standardmäßig unterscheidet der Killall-Befehl zwischen Groß- und Kleinschreibung. Wenn wir ihn also in der falschen Schreibweise schreiben, wird der Prozess nicht korrekt beendet.

[alvin@VM_0_16_centos test]$ killall HELLO1 
TEST1: kein Prozess gefunden

Wenn wir die Groß-/Kleinschreibung ignorieren möchten, können wir die Option -I (großes i) hinzufügen.

[alvin@VM_0_16_centos test]$ killall -I HELLO1 
[1] Beendet ./hello1

5. Schalten Sie das Echo der Befehlsausführung aus

Standardmäßig informiert Sie killall über den Ausführungsstatus des Befehls. Was aber, wenn uns die Ergebnisse der Ausführung egal sind und wir den Befehl einfach im Hintergrund ausführen möchten? Fügen Sie einfach die Option -q hinzu, wobei q für „quiet“ (ganz) steht, wie folgt:

[alvin@VM_0_16_centos test]$ killall HELLO2 
HELLO2: kein Prozess gefunden 
[alvin@VM_0_16_centos test]$ killall -q HALLO2 
[alvin@VM_0_16_centos test]$

6. Listen Sie alle unterstützten Signale auf

Wie bereits erwähnt, sendet der Befehl killall standardmäßig das SIGTERM-Signal, aber kann er auch andere Signale senden? Natürlich können Sie das. Sie können die Option -l verwenden, um alle von killall unterstützten Signale anzuzeigen:

[alvin@VM_0_16_centos test]$ killall -l 
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM 
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS 
UNBENUTZT

Sie können einem Prozess ein spezielles Signal senden, indem Sie die Option -s gefolgt von einem Signalnamen verwenden.

7. Interaktive Bedienung

Wenn Sie sich beim Beenden mehrerer Prozesse nicht sicher sind und Bedenken haben, Prozesse zu beenden, die nicht beendet werden sollen, können Sie die Option -i verwenden, mit der Sie frei entscheiden können, welche Prozesse beendet und welche beibehalten werden sollen.

[alvin@VM_0_16_centos test]$ killall -i hallo* 
Töte hello2(13825) ? (j/N) j 
Töte hallo3(13831) ? (j/N) N 
hallo: kein Prozess gefunden 
hallo1: kein Prozess gefunden 
hallo3: kein Prozess gefunden 
hallo.c: kein Prozess gefunden 
[2]- Beendet ./hello2

8. Warten Sie, bis ein Prozess beendet ist

Wenn Sie beim Senden eines Signals an einen Prozess sicherstellen möchten, dass der Prozess beendet wurde, bevor das Ausführungsergebnis zurückgegeben wird, können Sie die Option -w (w steht für „wait“) wie folgt verwenden:

[alvin@VM_0_16_centos test]$ killall -w hallo1 
[4]+ Beendet ./hello1

Es scheint, dass es hier keine Auswirkungen gibt, aber wenn es tatsächlich ausgeführt wird, können Sie feststellen, dass das Ausführungsergebnis nach ein oder zwei Sekunden angezeigt wird. Ohne die Option -w wird das Ausführungsergebnis sofort angezeigt.

Zusammenfassen

Oben finden Sie eine ausführliche Erklärung der 8 Anwendungsbeispiele für die Verwendung des Killall-Befehls zum Beenden eines Prozesses unter Linux. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Python ermittelt den Linux-Prozess und beendet den Prozess
  • Detaillierte Erklärung, wie man einen Prozess in Linux zwangsweise beendet
  • So finden Sie belegte Ports und beenden Prozesse in Linux
  • So ermitteln Sie die Ausführungszeit eines Befehls oder Prozesses in Linux
  • Linux-Methodenbeispiel zum Anzeigen aller Informationen des Prozesses
  • Lösen Sie das Problem, dass der Knotenprozess im Linux-System ausgeführt wird, aber nicht beendet werden kann

<<:  Detaillierte Erklärung des Parameters slave_exec_mode in MySQL

>>:  So versetzen Sie JavaScript in den Ruhezustand oder in den Wartezustand

Artikel empfehlen

Installieren des Ping-Tools in einem von Docker erstellten Container

Denn die von Docker abgerufenen Basisimages wie C...

Detaillierte Erklärung des Prinzips und der Verwendung von MySQL-Ansichten

Dieser Artikel veranschaulicht anhand von Beispie...

Node erstellt schnell die Backend-Implementierungsschritte

1. Installieren Sie zuerst Node, Express und Expr...

Vorgehensweise, wenn die Online-MySQL-Auto-Increment-ID erschöpft ist

Inhaltsverzeichnis Tabellendefinition - automatis...

Detaillierte Erklärung der Fallstricke von MySQL 8.0

Ich habe heute MySQL 8.0 aktualisiert. Das erste ...

Ideen und Praxis einer mehrsprachigen Lösung für ein Vue.js-Frontend-Projekt

Inhaltsverzeichnis 1. Welche Inhalte müssen üblic...

Installieren Sie Ethereum/Ethereum von Grund auf unter CentOS7

Inhaltsverzeichnis Vorwort Fügen Sie Sudo-Schreib...

Lösung für MySql-Fehler 1698 (28000)

1. Problembeschreibung: MysqlERROR1698 (28000)-Lö...

Praktisches Tutorial zum Ändern des MySQL-Zeichensatzes

Vorwort: In MySQL unterstützt das System viele Ze...

Erstellen eines Dateisystems für ARM-Entwicklungsboards unter Linux

1. Bitte laden Sie den Busybox-Quellcode online h...

Überblick über die grundlegenden Bestandteile von HTML-Webseiten

<br />Die Informationen auf Webseiten besteh...

So bereinigen Sie Ihre Docker-Daten vollständig

Inhaltsverzeichnis Regelmäßig beschneiden Spiegel...