kill
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
kill sendet über die Prozess-ID (PID) Signale an einen Prozess. Es wird oft benutzt, um außer Kontrolle geratene (aufgehängte) Prozesse zu beenden. Das Standardsignal ist -SIGTERM
(15) zum Beenden/Terminieren eines Prozesses, es können aber auch andere Signale gesendet werden. Meist ist es jedoch bequemer, Programme über ihren Namen anzusprechen. Dies ist mit pkill oder killall möglich. Noch bequemer kann man Anwendungen über das Klicken mit der Maus auf deren Fenster beenden, dazu verwendet man xkill. Eine gute Zusammenfassung liefert der Blogbeitrag 4 Wege einen Prozess zu beenden: kill, pkill, killall, xkill 🇩🇪.
Installation¶
Den Befehl kill
gibt es als eingebauten Befehl der Shell (z.B. der Bash oder der Dash) und als eigenständig ausführbares Programm. Beide sind in einer Ubuntu-Installation bereits vorinstalliert.
Aufruf¶
Der Shell-Befehl und das Programm besitzen eine etwas unterschiedliche Syntax und Funktionalität, siehe dazu help kill
[1], man kill
sowie info kill
[1].
Die grundlegende Bedienung ist jedoch immer gleich:
kill -SIGNAL PID
Es wird ein Signal an den Prozess mit der angegebenen Prozessnummer (PID
) gesendet. Das Signal kann dabei in drei Formen angegeben werden: Numerisch, alphabetisch oder als voller Name (z.B. -15
, -TERM
, -SIGTERM
). Dabei ist zu beachten, dass der Alphawert immer in Grossbuchstaben geschrieben wird. Negative Prozess-IDs (PIDs) können dazu verwendet werden, ganze Prozessgruppen auszuwählen. Eine PID von -1
ist von besonderer Bedeutung, sie entspricht allen Prozessen außer init
(PID 1) und dem kill
-Prozess selbst.
Beispiele¶
Allein die Bash unterstützt über 60 verschiedene Signale, darum sind die wichtigsten in einem eigenen Artikel beschrieben. Im Terminal kann man sich aber mit
kill -l
eine Kurzübersicht der Signale in Form einer kleinen Tabelle anzeigen lassen. Mit kill -l 11
wird die Signalnummer 11
in den entsprechenden Signalnamen und mit kill -l HUP
wird der Signalname HUP
in seine Signalnummer übersetzt.
Dem Prozess 4711 ein Signal
-STOP
zum Pausieren senden:kill -SIGSTOP 4711
und anschließend den angehaltenen Prozess 4711 mit
-CONT
weiterlaufen lassen:kill -SIGCONT 4711
Den Prozessen 123, 4567, 89 und 18999 das Standardsignal
-SIGTERM
senden:kill 123 4567 89 18999
Hinweis¶
Achtung!
Dem normalen Beenden von Prozessen mit -SIGTERM
(15) ist immer der Vorzug zu geben, weil dadurch dem Programm noch die Möglichkeit gegeben wird, sich "anständig" zu beenden. Erst wenn ein -SIGTERM
(15) nicht angenommen wird, kann man den Kernel mit einem -SIGKILL
(9) beauftragen, den Prozess zu debuggen (Dump) und hart abzubrechen. Die empfangenden Programme können ein -SIGKILL
(9) ebenso wie ein -SIGSTOP
(19) nicht abfangen, um programmspezifische Aktionen durchzuführen.
Alle Prozesse, die dem Benutzer erlaubt sind, mit -SIGTERM
beenden:
kill -15 -1
Alle Prozesse, die dem Benutzer erlaubt sind, mit -SIGKILL
abbrechen:
kill -9 -1
Links¶
pkill - Beenden von Prozessen anhand des spezifizierten Namens/ regulären Ausdrucks
killall - Beenden von Prozessen anhand des spezifizierten Namens
xkill - Fenster via Klicken beenden
Shell - Einige grundlegende Hinweise zur Verwendung der Shell.
Befehlsübersicht - generelle Befehlsübersicht, u.a. mit weiteren Befehlen für die Systemüberwachung und Prozesssteuerung.
Prozesssteuerung - im Allgemeinen
ps - Auflistung aller gerade laufenden Prozesse