Der Befehl kill sendet Signale an laufende Prozesse. Am häufigsten wird er verwendet, um nicht reagierende Programme zu beenden.
Syntax
kill [OPTION] [PID]...
OPTION- Das Signal, das gesendet werden soll. Ohne Angabe wirdSIGTERM(15) verwendet.PID- Die Prozess-ID des Zielprozesses.
Die wichtigsten Signale
Der kill-Befehl kann verschiedene Signale senden. Die drei häufigsten sind:
| Signal | Nummer | Bedeutung |
|---|---|---|
SIGHUP | 1 | Konfiguration neu laden |
SIGKILL | 9 | Prozess sofort beenden (nicht abfangbar) |
SIGTERM | 15 | Prozess beenden (Standard) |
Mit kill -l listest du alle verfügbaren Signale auf:
kill -l
Signale angeben
Signale kannst du auf drei Arten angeben:
kill -9 1234
kill -SIGKILL 1234
kill -KILL 1234
Alle drei Varianten senden das gleiche Signal an den Prozess mit der PID 1234.
Prozesse beenden
Um einen Prozess zu beenden, benötigst du seine Prozess-ID (PID). Diese findest du mit Befehlen wie ps, pgrep oder pidof.
Beispiel: Firefox beenden
Finde zuerst die PID des Firefox-Prozesses:
pidof firefox
Die Ausgabe zeigt eine oder mehrere PIDs:
6263 6199 6142 6076
Beende alle Firefox-Prozesse mit SIGTERM:
kill 6263 6199 6142 6076
Oder in einem Befehl kombiniert:
kill $(pidof firefox)
Prozess erzwungen beenden
Falls ein Prozess auf SIGTERM nicht reagiert, verwende SIGKILL:
kill -9 $(pidof firefox)
Vorsicht: SIGKILL beendet den Prozess sofort ohne Aufräumarbeiten. Ungespeicherte Daten gehen verloren. Verwende dieses Signal nur, wenn SIGTERM nicht funktioniert.
Konfiguration neu laden
Mit SIGHUP weist du einen Dienst an, seine Konfiguration neu zu laden, ohne ihn komplett neu zu starten.
sudo kill -1 $(cat /var/run/nginx.pid)
Dieser Befehl liest die PID des Nginx-Masterprozesses aus der PID-Datei und sendet SIGHUP. Nginx lädt daraufhin seine Konfiguration neu.
Spezielle PID-Werte
Der kill-Befehl interpretiert bestimmte PID-Werte speziell:
| PID | Bedeutung |
|---|---|
| > 0 | Signal an den Prozess mit dieser ID |
| 0 | Signal an alle Prozesse der aktuellen Prozessgruppe |
| -1 | Signal an alle Prozesse des Benutzers |
| < -1 | Signal an alle Prozesse der Prozessgruppe mit der entsprechenden GID |
Shell-Builtin vs. Binärdatei
kill existiert sowohl als Shell-Builtin als auch als eigenständige Binärdatei unter /bin/kill. Prüfe mit type welche Version verwendet wird:
type -a kill
Ausgabe:
kill ist ein integriertes Shell-Kommando
kill ist /bin/kill
Das Shell-Builtin hat Vorrang. Um explizit die Binärdatei zu nutzen, gib den vollständigen Pfad an:
/bin/kill -9 1234
Berechtigungen
Du kannst nur Signale an deine eigenen Prozesse senden. Für Prozesse anderer Benutzer benötigst du Root-Rechte:
sudo kill -9 1234
Zusammenfassung
Der kill-Befehl sendet Signale an Prozesse. SIGTERM (15) ist der Standard und ermöglicht dem Prozess ein sauberes Beenden. SIGKILL (9) erzwingt das sofortige Beenden. Mit SIGHUP (1) lädst du die Konfiguration eines Dienstes neu.