4 Wege einen Prozess zu beenden: kill, pkill, killall, xkill
Inhaltsverzeichnis
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
Der Standardbefehl lautet schlicht kill und sieht z.B. folgendermaßen aus:
$ kill 3130
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:
$ top top - 15:50:43 up 4:55, 2 users, load average: 0,29, 0,46, 0,53 [...] PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1321 root 20 0 183m 49m 11m S 6,3 1,3 5:05.73 Xorg 2024 benni 20 0 1071m 82m 36m S 6,3 2,2 3:09.70 compiz 2500 benni 20 0 317m 11m 8604 S 6,3 0,3 0:00.86 gnome-screensav 3130 benni 20 0 1462m 558m 47m S 6,3 14,6 4:12.20 firefox 3353 benni 20 0 898m 133m 60m S 6,3 3,5 3:44.68 spotify 1 root 20 0 24552 2432 1352 S 0,0 0,1 0:00.64 init 2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0,0 0,0 0:01.32 ksoftirqd/0 [...]
Sind sehr viele Prozesse auf dem PC, kann man konkret nach einem Prozess suchen, indem man folgende Syntax verwendet:
$ pgrep firefox 3130
Weiterhin ist es möglich, dem Prozess gewisse Signale zu senden. Falls ein Prozess nicht reagiert, kann man ihn mit folgendem Befehl „hart“ beenden.
kill -9 3130
Weitere Infos zu den Signalen gibt es unten.
pkill
Um einen Prozess direkt mit dem Namen anzusprechen, benötigt man pkill. Die Syntax ist
pkill [-SIGNAL] -x firefox
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.
killall firefox
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.
killall fire[TAB]
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)
xkill
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
- Signale: http://wiki.ubuntuusers.de/Signale
- Prozesse: http://wiki.ubuntuusers.de/Prozesse
Bildquelle: vizzzual-dot-com/flickr
Schreibe einen Kommentar