kill — Signale an Prozesse senden
Prozesse mit Signalen beenden, stoppen und steuern – kill per PID, killall und pkill per Name. Mit SIGTERM, SIGKILL und sicherem Vorgehen.
kill ist dein zentrales Werkzeug, um laufenden Prozessen Signale zu schicken – zum sauberen Beenden, harten Abschießen, Pausieren oder zum Neuladen der Konfiguration. Standardmäßig sendet kill das freundliche SIGTERM (15), das ein Programm noch aufräumen lässt; kill -9 (SIGKILL) erzwingt das Ende ohne Cleanup und riskiert Datenverlust – nur als letztes Mittel. killall und pkill matchen per Name und treffen schnell zu viele Prozesse, prüfe deshalb vorher mit pgrep.
kill — Per Prozess-ID
kill <pid> — Sendet SIGTERM (sauberes Beenden) an einen Prozess per PID.
kill 1234kill -9 <pid> — Sendet SIGKILL (hartes Beenden, lässt sich nicht abfangen oder ignorieren).
kill -9 1234kill -SIGTERM <pid> — Sendet SIGTERM per Namen (wie kill ohne Optionen).
kill -SIGTERM 1234kill -<signal> <pid> — Sendet ein bestimmtes Signal per Nummer oder Namen.
kill -HUP 1234kill <pid1> <pid2> <pid3> — Sendet SIGTERM an mehrere Prozesse gleichzeitig.
kill 1234 1235 1236kill -0 <pid> — Prüft, ob ein Prozess existiert (Signal 0 sendet nichts, testet nur).
kill -0 1234 && echo 'Process exists' || echo 'Process gone'kill -l — Listet alle verfügbaren Signalnamen und -nummern auf.
kill -lkillall — Per Prozessname
killall <name> — Sendet SIGTERM an alle Prozesse, die exakt auf den Namen passen.
killall nginxkillall -9 <name> — Beendet alle Prozesse mit passendem Namen hart.
killall -9 php-fpmkillall -i <name> — Interaktiver Modus: fragt vor jedem Beenden nach Bestätigung.
killall -i python3killall -u <user> — Beendet alle Prozesse eines bestimmten Benutzers.
killall -u testuserkillall -u <user> <name> — Beendet Prozesse mit passendem Namen eines bestimmten Benutzers.
killall -u www-data php-fpmkillall -o <time> <name> — Beendet nur Prozesse, die älter als die angegebene Zeit sind.
killall -o 1h php-fpmkillall -y <time> <name> — Beendet nur Prozesse, die jünger als die angegebene Zeit sind.
killall -y 5m my-scriptkillall -w <name> — Wartet, bis alle beendeten Prozesse tatsächlich tot sind.
killall -w nginxkillall -r '<regex>' — Beendet Prozesse, die auf einen regulären Ausdruck passen.
killall -r 'worker-[0-9]+'pkill — Per Muster
pkill <pattern> — Sendet SIGTERM an Prozesse, deren Name auf das Muster passt.
pkill firefoxpkill -9 <pattern> — Beendet Prozesse mit passendem Muster hart.
pkill -9 chromepkill -f '<pattern>' — Gleicht gegen die komplette Kommandozeile ab (nicht nur den Prozessnamen).
pkill -f 'python3 worker.py'pkill -u <user> — Beendet alle Prozesse eines Benutzers.
pkill -u guestpkill -t <tty> — Beendet alle Prozesse an einem bestimmten Terminal.
pkill -t pts/3pkill -P <ppid> — Beendet alle Kindprozesse eines Eltern-Prozesses (per PPID).
pkill -P 1234pkill -x <name> — Passt nur auf den exakten Prozessnamen (keine Teiltreffer).
pkill -x python3Prozess-IDs finden
pgrep <pattern> — Findet PIDs von Prozessen, die auf ein Muster passen (Gegenstück zu pkill).
pgrep nginxpgrep -l <pattern> — Zeigt PIDs samt Prozessnamen.
pgrep -l phppgrep -a <pattern> — Zeigt PIDs samt kompletter Kommandozeile.
pgrep -a pythonpgrep -f '<pattern>' — Gleicht gegen die komplette Kommandozeile ab.
pgrep -f 'node server.js'pidof <name> — Findet die PID eines laufenden Programms per exaktem Namen.
pidof nginxWichtige Signale
SIGTERM (15) — Sauberes Beenden. Der Prozess kann es abfangen und aufräumen. Standardsignal.
kill -TERM 1234 # oder einfach: kill 1234SIGKILL (9) — Sofortiges Beenden. Lässt sich nicht abfangen, blockieren oder ignorieren. Nur als letztes Mittel.
kill -9 1234SIGHUP (1) — Hangup. Wird oft genutzt, um Daemons zum Neuladen ihrer Konfiguration zu bewegen.
kill -HUP $(pidof nginx)SIGSTOP (19) — Pausiert einen Prozess (nicht abfangbar). Fortsetzen mit SIGCONT.
kill -STOP 1234SIGCONT (18) — Setzt einen gestoppten/pausierten Prozess fort.
kill -CONT 1234SIGUSR1 (10) / SIGUSR2 (12) — Benutzerdefinierte Signale. Von Anwendungen für eigene Aktionen genutzt (z. B. Log-Rotation).
kill -USR1 $(pidof nginx)SIGINT (2) — Interrupt (wie Strg+C). Sanftes Stoppen interaktiver Programme.
kill -INT 1234SIGQUIT (3) — Beenden mit Core-Dump (wie Strg+). Zum Debuggen.
kill -QUIT 1234Häufige Muster
kill $(pgrep -f '<pattern>') — Beendet Prozesse, die auf ein Kommandozeilen-Muster passen.
kill $(pgrep -f 'python3 worker.py')kill $(cat <pidfile>) — Beendet einen Prozess anhand seiner PID-Datei.
kill $(cat /var/run/nginx.pid)kill -HUP $(pidof <daemon>) — Lädt die Konfiguration eines Daemons neu, ohne ihn neu zu starten.
sudo kill -HUP $(pidof nginx)ps aux | grep <pattern> | grep -v grep | awk '{print $2}' | xargs kill — Findet und beendet Prozesse per Pipeline (klassisches Muster).
ps aux | grep 'myapp' | grep -v grep | awk '{print $2}' | xargs kill -9kill -TERM <pid> && sleep 5 && kill -0 <pid> && kill -9 <pid> — Sanftes Beenden mit Fallback: erst TERM, dann KILL, falls der Prozess noch lebt.
kill -TERM 1234; sleep 5; kill -0 1234 2>/dev/null && kill -9 1234fuser -k <port>/tcp — Beendet den Prozess, der einen bestimmten TCP-Port belegt.
fuser -k 8080/tcpfuser -k <file> — Beendet alle Prozesse, die eine bestimmte Datei nutzen.
fuser -k /var/log/app.log Fazit
Mit kill und seinen Verwandten steuerst du Prozesse präzise: Im Alltag reicht meist das voreingestellte SIGTERM, das ein Programm sauber beenden lässt – auch Shell-Jobs der aktuellen Sitzung sprichst du bequem per kill %1 an. Greife zu kill -9 (SIGKILL) erst, wenn ein Prozess partout nicht reagiert: Es bricht hart ab, ohne dass Puffer geschrieben oder Sperren freigegeben werden, was Datenverlust oder beschädigte Dateien zur Folge haben kann. Bei killall und pkill ist Vorsicht geboten – sie zielen per Name und können versehentlich den falschen oder gleich mehrere Prozesse treffen; teste das Muster vorab mit pgrep oder pkill -i. Für Daemons ist kill -HUP oft das richtige Mittel, um die Konfiguration ohne Neustart neu zu laden.
Weiterführende Links
- ubuntuusers-Wiki: kill – deutschsprachige Übersicht zu kill, killall und Unix-Signalen
- Wikipedia: Signal (Unix) – Hintergrund zu Unix-Signalen und ihren Nummern