Kommando kill sendet ein Signal (Befehlsoption) in Bezug auf einen Prozess (Befehlsargument). Typischer Anwendungsfall ist, wenn ein Programm (Prozess) nicht mehr rund läuft, außer Kontrolle gerät. In solchen Fällen muss der Prozess terminiert oder/und neu gestartet werden.
-
Im Vorfeld
Auf Linux Systemen (auf meinem) sind zwei Versionen von kill verfügbar (Prüfung via z.B. den Befehl which -a kill oder type -a kill ):
- Die bash eingebaute (built-in) Version ist /bin/kill.
- Ein weiteres Programm ist /usr/bin/kill).
Via Befehl kill --help erfährt der User, welche Version aktiv ist: höchstwahrscheinlich die eingebaute Version, es sei der Administrator die Konfiguration z.B. via Kommando alias absichtlich geändert hat. Für die eingebaute Version sprechen zwei Gründe: ID können sich über die PID hinaus auf Jobs-ID beziehen. Zudem können Prozesse terminiert werden, wenn die maximal dem User zulässige Grenze der geöffneten Prozesse überschritten wird.
In den Folgenden Kapiteln bezieht sich der Text primär auf die eingebaute Version von kill.
-
Beschreibung
SYNTAX: kill [-SIGNAL] PID...
-
Option -SIGNAL bestimmt, welches Signal gesendet werden soll.
Das Standardsignal ist -SIGTERM (15), eine "höfliche" Aufforderung an den Prozess, sich zu beenden. Damit wird die Möglichkeit eingeräumt, sinnvoll programmspezifische Aktionen abzuschließen. Ein "härterer" Gang ist via Signal -SIGKILL (9) gegeben: der betroffene Prozess wird übergangen. Eine solche "rabiate" Vorgehensweise soll nur die letzte Wahl sein.
- Argument PID (Process IDentification) bestimmt den Zielprozess.
ERLÄUTERUNG:
-
Bestimmung des Signals
Es gibt eine Menge zulässige Signal, darunter die zwei schon erwähnten: SIGTERM (15), SIGKILL (9). Via den Befehl kill -l oder kill -L wird die gesamte Palette angezeigt. Unter diesen ist das Signal -SIGHUP (Langbezeichnung), HUP (Kurzbezeichnung) (1) (Nummer), für "Prozess Neustart" von Belange.
In der Signal-Option kann das gewünschte Signal wahlweise über die Lang- oder Kurzbezeichnung, oder auch über die zugeordnete Signalnummer identifiziert werden. Folgende Befehle zur Terminierung von Prozessnummer 6263 sind z.B. gleich kill -SIGTERM 6263, kill -TERM 6263 , kill -15 6263 oder sogar kill 6263.
-
Bestimmung des Prozesses
Im Normalfall zielt der User auf einen einzelnen Prozess bzw. auf Prozesse, die mit einem bestimmten (widerspenstigen) Programm zusammenhängen, ab. Der User muss daher im Vorfeld die PID in Erfahrung bringen: Um Prozesslisten - und zugeordnete PID - aufzuzeigen, stehen verschiedene Befehle zur Verfügung z.B. ps, top, (htop, atop, etc).
Meistens startet ein bestimmtes Programm - z.B. firefox oder chrome - mehrere Prozesse. Dies wird über die Ausgabe der zuvor gelisteten Programme ersichtlich: z.B. ps ux -u akh zeigt alle Prozesse in BSD-Format, welche dem User akh zugeordnet sind. Es sind mehrere Zeilen (PID), die mit Programm firefox oder chrome zusammenhängen. Über eine Verkettung mit grep z.B. ps ux -u akh | grep -E -i firefox kann man die gewünschten Zeilen herausfischen. Eine praktischere Möglichkeit liefert das Kommando pidof firefox: Alle PID für firefox werden aufgelistet, die als Argumente von kill eingetragen werden müssen. Über bash Variablen Substitution kann man mit einem einzigen Befehl firefox restlos terminieren: kill $(pidof firefox).
Es gibt zudem die Möglichkeit über fiktive PID-Nummer (PID=0 oder PID<0) eine Sammlung von PID zu bestimmen, die terminiert werden sollen z.B. Prozesse, die einem User oder einer User-Gruppe zugeordnet sind. Via fiktive PID wird also ein bestimmtes Merkmal der Prozesse angesprochen. Für mehr Infos siehe z.B. linuxize: kill.
Beachte, dass ein User besondere Rechte benötigt - möglicherweise root-Rechte -, um Prozesse, die ihm nicht zugeordnet sind, zu tilgen.
-
Option -SIGNAL bestimmt, welches Signal gesendet werden soll.
-
Links
Weitere Infos sind folgenden Websites zu entnehmen:
Englisch (EN):
Bezogen auf das eingebaute Shell-Programm kill (z.B. /bin/kill)Bezogen auf das externe Programm kill (z.B. /usr/bin/kill)
Deutsch (DE):
Bezogen auf das eingebaute Shell-Programm kill (z.B. /bin/kill)