Manchmal reagiert ein Programm nicht mehr oder läuft im Hintergrund weiter, obwohl du es längst geschlossen hast. In solchen Fällen musst du den Prozess manuell beenden. Dafür gibt es drei Befehle: kill, killall und pkill.

Der Unterschied: kill arbeitet mit der Prozess-ID (PID), während killall und pkill Prozesse anhand ihres Namens beenden.

Signale

Die drei Befehle senden Signale an Prozesse. Die wichtigsten Signale sind:

SignalNummerBedeutung
TERM15Prozess sauber beenden (Standard)
KILL9Prozess sofort abbrechen
HUP1Prozess neu laden

Das Signal TERM (15) gibt dem Prozess die Chance, sich ordentlich zu beenden und Ressourcen freizugeben. Reagiert der Prozess nicht, erzwingst du das Beenden mit KILL (9).

Du kannst Signale auf drei Arten angeben:

kill -9 1234        # Mit Nummer
kill -KILL 1234     # Mit Namen
kill -SIGKILL 1234  # Mit SIG-Präfix

Alle verfügbaren Signale zeigt dir:

kill -l

Prozess mit kill beenden

Der Befehl kill benötigt die Prozess-ID. Diese findest du mit pidof, pgrep oder ps.

Beispiel: Firefox reagiert nicht mehr.

Finde die PID:

pidof firefox

Ausgabe:

2551 2514 1963 1856 1771

Firefox startet mehrere Prozesse. Beende alle mit dem KILL-Signal:

kill -9 2551 2514 1963 1856 1771

Alternativ kombinierst du beide Schritte:

kill -9 $(pidof firefox)

Prozess mit killall beenden

Der Befehl killall beendet alle Prozesse mit einem bestimmten Namen. Du brauchst keine PID.

killall -9 firefox

Das beendet alle Firefox-Prozesse auf einmal.

Alle Prozesse eines Benutzers beenden:

sudo killall -u sara

Dieser Befehl beendet sämtliche Prozesse, die unter dem Benutzer sara laufen.

Prozess mit pkill beenden

Der Befehl pkill funktioniert ähnlich wie killall, erlaubt aber Mustervergleiche. Der Prozessname muss nicht exakt übereinstimmen.

pkill -9 fire

Das beendet jeden Prozess, dessen Name fire enthält.

Prozesse eines bestimmten Benutzers beenden:

pkill -9 -u sara firefox

Das beendet nur die Firefox-Prozesse von Benutzer sara.

killall vs. pkill

Beide Befehle arbeiten mit Prozessnamen, unterscheiden sich aber:

  • killall erfordert den exakten Prozessnamen
  • pkill erlaubt Teilübereinstimmungen (Pattern Matching)

Verwende killall, wenn du den genauen Namen kennst. Nutze pkill für flexible Suchen oder wenn du nur einen Teil des Namens weißt.

Zusammenfassung

BefehlAnwendung
kill -9 PIDBeendet einen Prozess per ID
killall -9 nameBeendet alle Prozesse mit diesem Namen
pkill -9 musterBeendet Prozesse, die dem Muster entsprechen

Du kannst nur deine eigenen Prozesse beenden. Für Prozesse anderer Benutzer brauchst du Root-Rechte (sudo).