Linux / Befehl killall: Signale an Prozesse mit gleichem Namen senden

Linuxs killall sendet Signale an Prozesse, deren Name dem angegebenen Namen entspricht. Der Standard ist SIGTERM, und wenn es mehrere Prozesse mit demselben Namen gibt, können alle gezielt werden.

Diese Erklärung basiert auf der gängigen psmisc-Implementierung in Linux. Die Bedeutung von killall kann in anderen Unix-Varianten unterschiedlich sein, daher sollte beim Wechsel zwischen Systemen immer das aktuelle Handbuch überprüft werden. Die Auswahl des Ziels wird zuerst mit pgrep überprüft.

Grundlegende Syntax

killall [option] name...

Installierte Implementierungen und Optionen können je nach Distribution variieren. Überprüfen Sie die aktuelle Systembeschreibung mit man killall.

Beispiele

Überprüfen von Prozessen mit demselben Namen

Zuerst sehen Sie sich die PID und die Befehlszeile des beabsichtigten Namens an.

pgrep -a -x myworker

Anforderung einer normalen Beendigung

In der Linux-psmisc-Implementierung wird SIGTERM an Jobs gesendet, deren Namen übereinstimmen.

killall -TERM myworker

Zielname und Benutzerbeschränkungen

Verwenden Sie dies, wenn Sie den Benutzerbereich einschränken müssen.

killall -u alice myworker

Wenn es mehrere Prozesse mit demselben Namen gibt

killall kann ein Signal an alle Prozesse senden, die dem angegebenen Namen entsprechen. Sie sollten zuerst die Kandidaten mit pgrep prüfen, um zu vermeiden, dass unerwartete Instanzen beendet werden.

pgrep -a -x demo-worker
killall -TERM demo-worker

Der erste Befehl zeigt die Ziel-PID und die Befehlszeile an, während der zweite Befehl normalerweise nichts ausgibt, auch wenn er erfolgreich ist. Überprüfen Sie danach die verbleibenden Prozesse mit pgrep -a -x demo-worker. Falls es mehrere Prozesse mit demselben Namen gibt, können sie alle betroffen sein.

Ersetzen Sie den Beispielsname durch den von Ihnen erstellten Testprozess. Manche Unix-basierten killall-Implementierungen verhalten sich anders als Linux, daher sollte Portabilität nicht vorausgesetzt werden. Wenn das Ziel ein Dienst ist, kann die Verwendung von systemctl stop service-name geeigneter sein als das direkte Beenden des Prozesses.

Hauptoptionen und Format

Optionen/Format Beschreibung
-s signal Legt das zu sendende Signal fest.
-u user Wählt nur die Prozesse des angegebenen Benutzers aus.
-i Fragt für jedes Ziel zur Bestätigung.
-v Zeigt detaillierte Ausführungsinformationen an.
-w Wartet, bis die übereinstimmenden Prozesse beendet sind.

Vorsichtsmaßnahmen bei der Verwendung

Seien Sie besonders vorsichtig auf gemeinsam genutzten Servern, da die Verwendung nur des Namens alle Prozesse mit demselben Namen beeinflussen kann. -w kann lange auf Prozesse warten, die nicht beendet werden. Das Verhalten von killall auf anderen Betriebssystemen kann unterschiedlich sein, daher sollte es nicht mit der Linux-psmisc-Implementierung verwechselt werden.

Häufig gestellte Fragen

Beendet killall alle Prozesse auf dem System?

In der Linux-psmisc-Implementierung richtet es sich nach Prozessen, die dem angegebenen Namen entsprechen. In anderen Unix-Implementierungen kann die Bedeutung jedoch unterschiedlich sein.

Offizielle Dokumentation

Das genaue Verhalten der Optionen und Unterschiede in der Implementierung finden Sie in der offiziellen killall-Dokumentation.