Es kann ab und an einmal vorkommen, daß auch unter Linux ein Programm in einen ungeplanten Fehler läuft und sich somit aufhängt. Was tun, wenn ein Klick oben rechts oder links im Fenster auf das kleine X das jeweilige Programm nicht schließt? Ich zeige Dir verschiedene Wege, ein hängendes oder abgestürztes Programm zu beenden. Viel Spaß
Unter jedem Betriebssystem und mit jedem Programm kann es schon mal vorkommen, daß es an irgendeiner Stelle zwickt und ein Programm nicht mehr so mag, wie man eigentlich will. Unter Linux gibt es verschiedene Möglichkeiten hier ein hängendes Programm oder auch Zombie-Prozess genannt abzuschießen.
Programme beenden bzw. abschießen
In der grafischen Oberfläche:
Wir starten die Systemüberwachung und suchen das entsprechende Programm heraus. Nun auf den jeweiligen Prozess mit einem Rechtsklick -> Beenden klicken. Hilft das nicht, geht auch Prozess -> beenden. In vielen Fällen sollte das schon genug sein und das Programm gezwungenermaßen beendet worden sein. Ein normaler Start ist jetzt wieder möglich.

In der Konsole:
Wir öffnen eine Konsole und geben folgenden Befehl ein:
ps -ef | grep PROGRAMNAME
Wenn z.B. Firefox hängen sollte, hieße das:
ps -ef | grep firefox
Wenn z.B. Thunderbird hängen sollte, hieße das:
ps -ef | grep thunderbird
michlfrankekn 1650 1489 0 Jul31 ? 00:06:29 /usr/lib/thunderbird/thunderbird
michlfranken 28431 28383 0 08:30 pts/1 00:00:00 grep thunderbird
Aus diesem Auszug können wir nun folgendes erkennen:
Die obere Zeile ist der Prozess Thunderbird und die untere Zeile unser Grep – Befehl nach dem Thunderbird Prozess. Der Thunderbird Prozess hat die ID „1650“
Um nun Thunderbird via Terminal zu beenden, müssen wir einen kill Befehl absetzen:
kill 1650
Wenn das nicht hilft, müssen wir mit der groben Kelle kommen und geben dem kill Befehl noch einen Parameter zum sofortigen Abschießen mit:
kill -9 1650

Damit würgt Ihr hängende Prozesse hab. Wenn jetzt ein Programm mehrere Prozesse hat, könnte die Prozessliste lang werden. Hätte in unserem Beispiel Thunderbird noch zwei oder drei weitere Prozesse, die die PID 1651 und 1652 hätte, könnten wir den Befehl wie folgt um diese Prozesse ergänzen:
kill 1650 1651 1652
bzw.
kill -9 1650 1651 1652
Wenn wir jetzt aber vielleicht 50 oder mehr Thunderbird Prozesse haben, wird es schnell sehr mühsam das alles abzutippen. Hier könnten wir mit einer Variante des kill Befehls arbeiten, dem killall. In unserem Beispiel sähe das so aus:
killall thunderbird

Damit würden alle dem Thunderbird angehörigen Prozesse mit beendet. Killall würde ich aber immer nur dann verwenden, wenn gefahlos eine Anwendung beendet werden kann. Es kann auch vorkommen, daß „Child Prozesse“ inkonsistent wurden, aber der „Parent Prozess“ noch problemlos läuft und auch nicht beendet werden darf. Im Geschäftsumfeld kann dieses Szenario durchaus als praxisnah erachtet werden. Hier wäre ein leichtfertig abgesetzter Killall – Befehl kontraproduktiv.
Mögliche Parameter sind:
kill --help
kill: kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec … oder kill -l [Signalname]
Send a signal to a job.
Send the processes identified by PID or JOBSPEC the signal named by
SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then
SIGTERM is assumed.
Options:
-s sig SIG is a signal name
-n sig SIG is a signal number
-l list the signal names; if arguments follow `-l’ they are
assumed to be signal numbers for which names should be listed
-L synonym for -l
Kill is a shell builtin for two reasons: it allows job IDs to be used
instead of process IDs, and allows processes to be killed if the limit
on processes that you can create is reached.
Exit Status:
Returns success unless an invalid option is given or an error occurs.
killall --help
Aufruf: killall [-Z CONTEXT] [-u USER] [-y TIME] [-o TIME] [-eIgiqrvw]
[-s SIGNAL | -SIGNAL] NAME…
killall -l, –list
killall -V, –version
-e,–exact genaue Übereinstimmung für sehr lange Namen verlangen
-I,–ignore-case nicht zwischen Groß- und Kleinschreibung unterscheiden
-g,–process-group Prozessgruppe statt Einzelprozess abbrechen
-y,–younger-than Prozesse jünger als ZEIT abbrechen
-o,–older-than Prozesse älter als ZEIT abbrechen
-i,–interactive vor Abbruch Bestätigung des Benutzers einholen
-l,–list alle bekannten Signalnamen auflisten
-q,–quiet keine Warnungen und Fehler ausgeben
-r,–regexp NAME ist ein erweiteter regulärer Ausdruck
-s,–signal SIGNAL benutzerdefiniertes Signal anstatt SIGTERM senden
-u,–user USER nur Prozesse von angegebenem Benutzer abbrechen
-v,–verbose benachrichtigen, falls das Signal erfolgreich gesendet
wurde
-V,–version Version anzeigen
-w,–wait auf das Beenden der Prozesse warten
-n,–ns PID nur Prozesse aus demselben Namensraum wie PID
berücksichtigen
-Z,–context REGEXP nur Prozesse abbrechen, die einen Kontext haben
(muss vor anderen Argumenten stehen)
Es muß also mit einem gewissen Augenmaß an die Sache herangegangen werden. Eine generelle Empfehlung läßt sich nicht aussprechen. Man sollte immer Fall für Fall entscheiden ob es besser ist die einzelnen Prozess IDs zu beenden oder gleich alle Prozesse, die zu einem Programm gehören. Die obigen Beispiele sind ein Auszug, wie ich hier vorgehe in der Praxis. Natürlich gibt es darüber hinaus noch weitere Methoden und Vorgehensweisen.
Weitere Beschreibungen zu den Signal Parametern, findet ihr hier
https://www.cyberciti.biz/faq/unix-kill-command-examples/
Das zu diesem Artikel korrespondierende Video kann auf meinem YouTube Kanal hier angeschaut werden.
Folgt mir gerne auch auf:
- MichlFranken auf Mastodon
- MichlFranken auf Twitter
- MichlFranken auf YouTube
- MichlFranken RSS
- MichlFranken Blog
Um unabhängig von großen Plattformen zu sein, benötige ich Deine Unterstützung. Dies geht via:
- Liberapay Zahlung
- Patreon Mitgliedschaft
- Paypal Zahlung
- Banküberweisung / Dauerauftrag (Bankverbindung gerne auf Anfrage)
- Barspende (Anonym)
Alle Details zu hier.
Du möchtest mehr über Linux lernen?
- Welches Linux passt zu mir?: Entscheidungshilfe für Linux Einsteiger – 2020: (Partnerlink / Affiliate Link)
- Ubuntu 20.04: Schnellanleitung für Einsteiger (Die Linux-Einsteiger-Reihe, Band 6) (Partnerlink / Affiliate Link)
- Ubuntu 20.04: Praxiswissen für Ein- und Umsteiger (Partnerlink / Affiliate Link)
- Ubuntu 18.04: Schnellanleitung für Einsteiger: (Partnerlink / Affiliate Link)
- Ubuntu 18.04 LTS: Das umfassende Handbuch zur LTS-Version »Bionic Beaver« (Partnerlink / Affiliate Link)
- Arch Linux: Schnellanleitung für Einsteiger (Partnerlink / Affiliate Link)
- Linux: Das umfassende Handbuch (Partnerlink / Affiliate Link)
- Linux kompatibles Notebook (Partnerlink / Affiliate Link)
- Notebookständer (Partnerlink / Affiliate Link)
- Raspberry Pie 4 Model 4 Set (Partnerlink / Affiliate Link)
- Linux Mint Slim PC als Mini-Server: (Partnerlink / Affiliate Link)
Hinweise:
- Als Amazon-Partner verdiene ich an qualifizierten Verkäufen
- Ich besitze eine legale Lizenz von Final Cut Pro X, die die kommerzielle Verwendung von lizenzfreien Inhalten in FCP abdeckt
- Die Beiträge von MichlFranken stellen grundsätzlich eine unverbindliche Demo dar. Nachstellung auf eigene Gefahr. Es können bei unsachgemäßer Nachstellung negative Folgeeffekte wie z.B. Datenverlust oder Systemausfälle auftreten. Jede Form der Gewährleistung ausgeschlossen. Im Zweifelsfall bitte eine virtuelle Maschine aufsetzen und testen aber nicht auf einem produktiven System nachstellen.
2 Comments