staging.inyokaproject.org

Von „Shell/kill“ weitergeleitet.

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:

Wiki/Icons/terminal.png 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 

./killed.png

Diese Revision wurde am 1. Oktober 2018 18:37 von Beforge erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: PID, Shell, System, Prozesse