4 Wege einen Prozess zu beenden: kill, pkill, killall, xkill

Es gibt viele Wege, mit denen man einen Prozess in der Linuxkonsole beenden kann. Wer die Unterschiede zwischen den Befehlen kennt, kann zielgerichtet Prozesse beenden, die sich über herkömmliche Weg (über den Schließen-Button) vielleicht nicht beenden lassen. Welche Befehle für welchen Einsatzzweck gedacht sind, möchte ich im Folgenden erläutern.

kill

kill

Der Standardbefehl lautet schlicht kill und sieht z.B. folgendermaßen aus:

Um damit einen Prozess zu beenden, ist dessen PID („Process identifier“, eine einzigartige Nummer, die dem Prozess zugeordnet ist) notwendig. Es gibt auch hier etliche Wege, um die PID herauszufinden. Am einfachsten geht das z.B. über den Befehl top, der in der ersten Spalte die PID ausgibt:

Sind sehr viele Prozesse auf dem PC, kann man konkret nach einem Prozess suchen, indem man folgende Syntax verwendet:

Weiterhin ist es möglich, dem Prozess gewisse Signale zu senden. Falls ein Prozess nicht reagiert, kann man ihn mit folgendem Befehl „hart“ beenden.

Weitere Infos zu den Signalen gibt es unten.

pkill

Um einen Prozess direkt mit dem Namen anzusprechen, benötigt man pkill. Die Syntax ist

Mit -x verhindert man, dass sich andere Befehle angesprochen fühlen, die die Zeichenfolge „firefox“ in sich tragen. Meistens ist das nicht notwendig, aber hin und wieder eben doch.

killall

Mit killall kann man alle Prozesse beenden, die auf einen bestimmten Namen hören. Im Gegensatz zu kill werden hier also mehrere Prozesse beendet und nicht mit ihrer PID angesprochen, sondern mit ihrem Namen.

Wird kein Signal explizt angegeben, sendet killall ein SIGTERM, also einen „weichen“ Befehl.

Häufig ist es sinnvoll, mit der Tabulator-Taste den richtigen Befehlnamen vervollständigen zu lassen. Hierdurch vermeidet man Tippfehler und stellt fest, ob dieser Prozessname überhaupt existiert.

xkill

Die Variante für alle, die sich gar nicht erst mit top oder ps herumärgern wollen, lautet xkill. Führt man es aus (entweder im Terminal oder über Alt + F2)

verwandelt sich der Mauszeiger in einen Totenkopf (bzw. ein Kreuz). Mit einem Mausklick auf das Programmfenster, wird dieses abgeschossen. Ich bin von diesem Befehl nicht überzeugt, da man damit aus Versehen auch ganz andere Programm abschießen kann. Es ist gerade für Einsteiger besonders „anschaulich“.

In Wirklichkeit leitet xkill den Wunsch auf beenden des Prozesses an den XServer weiter, der den Rest übernimmt.

Signale

Da ich in den vorherigen Abschnitten häufiger davon gesprochen habe, gibt es hier eine Übersicht über Signale, die verwendet werden können.

Nr. Name Aktion Bemerkung
1 SIGHUP Ende Trennen der Terminalverbindung, siehe auch Terminal schließen.
2 SIGINT Ende Unterbrechen der Terminalverbindung, siehe auch Strg+C.
3 SIGQUIT Dump & Ende Unterbrechen der Terminalverbindung und debuggen.
9 SIGKILL Dump & Ende Senden Abbruch und debuggen durch den Kernel, siehe auch Wichtig.
10 SIGUSR1 Intern Frei zur eigenen Benutzung, sofern in den Programmen integriert, siehe auch Fortschritt von dd abfragen.
12 SIGUSR2 Intern Frei zur eigenen Benutzung, sofern in den Programmen integriert.
15 SIGTERM Ende Standard bei allen kill-Programmen: Abschließen und beenden des Programms.
18 SIGCONT Restart Ein mit -SIGSTOP (19) angehaltener Prozess soll weiterlaufen, siehe auch bg %jobnummer.
19 SIGSTOP Anhalten Der Prozess wird pausiert und kann mit -SIGCONT (18) wieder gestartet werden.

Quelle: http://wiki.ubuntuusers.de/Signale, Links teilweise entfernt

Weiterführende Links

Bildquelle: vizzzual-dot-com/flickr

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *