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 1234

kill -9 <pid> — Sendet SIGKILL (hartes Beenden, lässt sich nicht abfangen oder ignorieren).

kill -9 1234

kill -SIGTERM <pid> — Sendet SIGTERM per Namen (wie kill ohne Optionen).

kill -SIGTERM 1234

kill -<signal> <pid> — Sendet ein bestimmtes Signal per Nummer oder Namen.

kill -HUP 1234

kill <pid1> <pid2> <pid3> — Sendet SIGTERM an mehrere Prozesse gleichzeitig.

kill 1234 1235 1236

kill -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 -l

killall — Per Prozessname

killall <name> — Sendet SIGTERM an alle Prozesse, die exakt auf den Namen passen.

killall nginx

killall -9 <name> — Beendet alle Prozesse mit passendem Namen hart.

killall -9 php-fpm

killall -i <name> — Interaktiver Modus: fragt vor jedem Beenden nach Bestätigung.

killall -i python3

killall -u <user> — Beendet alle Prozesse eines bestimmten Benutzers.

killall -u testuser

killall -u <user> <name> — Beendet Prozesse mit passendem Namen eines bestimmten Benutzers.

killall -u www-data php-fpm

killall -o <time> <name> — Beendet nur Prozesse, die älter als die angegebene Zeit sind.

killall -o 1h php-fpm

killall -y <time> <name> — Beendet nur Prozesse, die jünger als die angegebene Zeit sind.

killall -y 5m my-script

killall -w <name> — Wartet, bis alle beendeten Prozesse tatsächlich tot sind.

killall -w nginx

killall -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 firefox

pkill -9 <pattern> — Beendet Prozesse mit passendem Muster hart.

pkill -9 chrome

pkill -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 guest

pkill -t <tty> — Beendet alle Prozesse an einem bestimmten Terminal.

pkill -t pts/3

pkill -P <ppid> — Beendet alle Kindprozesse eines Eltern-Prozesses (per PPID).

pkill -P 1234

pkill -x <name> — Passt nur auf den exakten Prozessnamen (keine Teiltreffer).

pkill -x python3

Prozess-IDs finden

pgrep <pattern> — Findet PIDs von Prozessen, die auf ein Muster passen (Gegenstück zu pkill).

pgrep nginx

pgrep -l <pattern> — Zeigt PIDs samt Prozessnamen.

pgrep -l php

pgrep -a <pattern> — Zeigt PIDs samt kompletter Kommandozeile.

pgrep -a python

pgrep -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 nginx

Wichtige Signale

SIGTERM (15) — Sauberes Beenden. Der Prozess kann es abfangen und aufräumen. Standardsignal.

kill -TERM 1234   # oder einfach: kill 1234

SIGKILL (9) — Sofortiges Beenden. Lässt sich nicht abfangen, blockieren oder ignorieren. Nur als letztes Mittel.

kill -9 1234

SIGHUP (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 1234

SIGCONT (18) — Setzt einen gestoppten/pausierten Prozess fort.

kill -CONT 1234

SIGUSR1 (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 1234

SIGQUIT (3) — Beenden mit Core-Dump (wie Strg+). Zum Debuggen.

kill -QUIT 1234

Hä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 -9

kill -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 1234

fuser -k <port>/tcp — Beendet den Prozess, der einen bestimmten TCP-Port belegt.

fuser -k 8080/tcp

fuser -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.

Verwandte Kommandos

  • ps – laufende Prozesse und ihre PIDs anzeigen
  • top – Prozesse und Ressourcennutzung live überwachen
  • jobs – Hintergrund-Jobs der aktuellen Shell auflisten