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: 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: 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: 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: 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! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung des Parameters slave_exec_mode in MySQL
>>: So versetzen Sie JavaScript in den Ruhezustand oder in den Wartezustand
Denn die von Docker abgerufenen Basisimages wie C...
Dieser Artikel veranschaulicht anhand von Beispie...
1. Installieren Sie zuerst Node, Express und Expr...
Inhaltsverzeichnis Tabellendefinition - automatis...
Ich habe heute MySQL 8.0 aktualisiert. Das erste ...
Inhaltsverzeichnis 1. Welche Inhalte müssen üblic...
1. es-Startbefehl: docker run -itd -e TAKE_FILE_O...
Inhaltsverzeichnis Vorwort Fügen Sie Sudo-Schreib...
Warum erzielen wir diesen Effekt? Tatsächlich wir...
Standort / { Index Index.jsp; Proxy_next_upstream...
1. Problembeschreibung: MysqlERROR1698 (28000)-Lö...
Vorwort: In MySQL unterstützt das System viele Ze...
1. Bitte laden Sie den Busybox-Quellcode online h...
<br />Die Informationen auf Webseiten besteh...
Inhaltsverzeichnis Regelmäßig beschneiden Spiegel...