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:
| Signal | Nummer | Bedeutung |
|---|---|---|
TERM | 15 | Prozess sauber beenden (Standard) |
KILL | 9 | Prozess sofort abbrechen |
HUP | 1 | Prozess 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:
killallerfordert den exakten Prozessnamenpkillerlaubt 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
| Befehl | Anwendung |
|---|---|
kill -9 PID | Beendet einen Prozess per ID |
killall -9 name | Beendet alle Prozesse mit diesem Namen |
pkill -9 muster | Beendet Prozesse, die dem Muster entsprechen |
Du kannst nur deine eigenen Prozesse beenden. Für Prozesse anderer Benutzer brauchst du Root-Rechte (sudo).