Signale & kill
Prozesse & System
Was sind Signale?
Signale sind kurze Nachrichten, die der Kernel an Prozesse schickt, um ihnen mitzuteilen, dass etwas passieren soll – zum Beispiel „Bitte beenden“ oder „Lies deine Konfiguration neu ein“. Jedes Signal hat einen Namen (z. B. SIGTERM) und eine Nummer (z. B. 15). Ein Prozess kann auf die meisten Signale reagieren, indem er einen sogenannten Signal-Handler ausführt – etwa um vor dem Beenden noch Dateien zu speichern.
Die wichtigsten Signale
| Signal | Nr. | Bedeutung |
|---|---|---|
SIGTERM | 15 | Höfliche Bitte zu beenden (Standard, abfangbar) |
SIGKILL | 9 | Sofortiges, hartes Beenden (nicht abfangbar) |
SIGHUP | 1 | Terminal weg / Konfiguration neu laden |
SIGINT | 2 | Abbruch durch Strg+C |
SIGSTOP | 19 | Anhalten (nicht abfangbar) |
kill: Signale an eine PID senden
Trotz des Namens beendet kill nicht zwangsläufig – es sendet ein Signal. Ohne Angabe schickt es SIGTERM (15), die höfliche Aufforderung zum Beenden:
$ kill 4821 # SIGTERM an PID 4821 $ kill -HUP 4821 # SIGHUP, oft zum Neuladen der Config $ kill -l # alle Signale auflisten
Reagiert ein Prozess nicht auf SIGTERM (er hängt völlig), greifst du zum harten SIGKILL. Dieses Signal kann nicht abgefangen werden – der Kernel beendet den Prozess sofort:
$ kill -9 4821 $ kill -KILL 4821 # identisch
killall und pkill: nach Namen
Statt erst die PID zu suchen, kannst du Prozesse direkt über ihren Namen ansprechen. killall erwartet den exakten Programmnamen, pkill arbeitet mit einem Muster:
$ killall firefox # alle Firefox-Prozesse (SIGTERM) $ killall -9 firefox # hart beenden $ pkill -f backup.sh # nach voller Befehlszeile suchen $ pkill -u anna # alle Prozesse von Nutzer anna
Reihenfolge: erst sanft, dann hart
Die goldene Regel: Versuche immer zuerst SIGTERM (also kill ohne -9). So bekommt das Programm die Chance, offene Dateien zu speichern, Sperren freizugeben und sich sauber zu beenden. Erst wenn der Prozess nach einigen Sekunden nicht reagiert, greifst du zu kill -9.
$ kill 4821 $ sleep 5 $ kill -9 4821 # nur falls noch aktiv
Stolperfallen & Sicherheit
kill -9 ist verlockend, aber gefährlich: Da der Prozess keine Chance zum Aufräumen hat, können Daten verloren gehen oder Datenbanken in einem inkonsistenten Zustand zurückbleiben. Sei besonders vorsichtig mit pkill und killall – ein zu allgemeines Muster kann ungewollt viele Prozesse treffen. Prüfe vorher mit pgrep -a muster, welche Prozesse betroffen wären. Als normaler Nutzer kannst du nur deine eigenen Prozesse beenden; fremde Prozesse erfordern sudo. Mehr zu Prozessen findest du unter Prozesse.
Welches Signal kann ein Prozess nicht abfangen?