Linux ist berühmt für seine Stabilität, doch nicht jedes Programm läuft fehlerfrei. Mithilfe der Gnome-Systemüberwachung identifizieren Sie frühzeitig aus dem Ruder laufende Prozesse und terminieren sie.
Wie alle modernen Betriebssysteme ist auch Linux Multitasking-fähig: Es verwaltet die Ressourcen mehrerer Programme gleichzeitig – auch mehr, als der Prozessor an echten oder Hyperthreading-Kernen zur Verfügung stellt. Das gelingt nur, weil eine wichtige Komponente des Betriebssystems, der sogenannte Scheduler, Programme regelmäßig unterbricht, um anderen einen CPU-Kern zuzuweisen.
Laufende Programme nennt man Prozesse. Die begriffliche Unterscheidung zwischen einem Programm und einem Prozess ist hilfreich, weil Sie zum Beispiel dasselbe Binary mehrfach starten können: Da dann jede “Kopie” eigene Ressourcen wie Speicher und Rechenzeit benötigt, existieren damit mehrere Prozesse, in denen dasselbe Programm läuft.
Prozesse können übermäßig Ressourcen verbrauchen, indem sie viel Rechenzeit oder Arbeitsspeicher beanspruchen. Das weist häufig auf einen Fehler hin. In ungünstigen Fällen lässt sich der Rechner dann nicht mehr bedienen; je nach Fehlerquelle erkennt Linux irgendwann den außer Kontrolle geratenen Prozess und terminiert ihn. Dabei hilft der sogenannte OOM Killer (Out-of-Memory), der ein “Opfer” auswählt (Abbildung 1). So weit müssen Sie es jedoch gar nicht erst kommen lassen.
Prozesse im Blick
Welche Prozesse aktuell auf Ihrem Linux-Rechner laufen, finden Sie mit einem Blick in die Prozessliste heraus. Der generische Weg dorthin führt über den Befehl ps in der Konsole. Für die grafische Oberfläche gibt es aber komfortablere Werkzeuge, unter Ubuntu beispielsweise das Gnome-Tool Systemüberwachung, dessen Programmdatei gnome-system-monitor heißt.
Am schnellsten starten Sie den Helfer, indem Sie die Anwendungsübersicht öffnen, im Suchdialog “mon” eingeben und den Treffer Systemüberwachung auswählen. Es erscheint ein Fenster mit drei Reitern, das beim ersten Start den Reiter Prozesse anzeigt. Bei allen folgenden Aufrufen öffnet die Software dann den zuletzt geöffneten Reiter.
Die Liste der Prozesse enthält eine Reihe von Spalten. Die erste davon zeigt die alphabetisch sortierten Prozessnamen, wobei das Tool nicht zwischen Groß- und Kleinschreibung unterscheidet. Suchen Sie Informationen zu einem Prozess, dessen vollen Namen Sie kennen, ist das eine gute Darstellung: Dann scrollen Sie einfach in den relevanten alphabetischen Bereich und finden schnell den gesuchten Eintrag. Dabei gibt es gelegentlich Überraschungen: So startet etwa Firefox eine Reihe von Prozessen, um die Inhalte unterschiedlicher Reiter getrennt voneinander zu verarbeiten. Diese Prozesse tauchen in der Liste nicht etwa als Firefox auf, sondern mit dem Namen Web Content (Abbildung 2).
Um zu sehen, wie Prozesse zusammenhängen, wechseln Sie von der einfachen Listen- zu einer Baumansicht: Zwischen den Prozessen bestehen Vater-Kind-Beziehungen, die zu einer Baumstruktur führen. Wenn ein Prozess weitere Prozesse erzeugt, nennt man ihn den Vaterprozess, die neuen heißen Kindprozesse. Wenn Sie mit Abhängigkeiten anzeigen im Hamburger-Menü in die Baumdarstellung wechseln, sehen Sie durch die Anordnung und Einrückung der Prozesse, wer zu wem gehört (Abbildung 3).

Abbildung 2: Die markierten Prozesse namens Web Content gehören zu Firefox, was sich in der Listenansicht aber nicht erkennen lässt.

Abbildung 3: Aktivieren Sie die Anzeige der Abhängigkeiten, dann sehen Sie den Prozessbaum. Hier erscheinen die Web-Content-Prozesse unterhalb von Firefox.
CPU-Last
Ebenso nützlich wie die Baumansicht erweist sich die Möglichkeit, nach einer anderen Spalte zu sortieren, zum Beispiel der CPU-Last (%**CPU). Klicken Sie einen Spaltentitel an, um nach dieser Kategorie zu sortieren; mit einem weiteren Klick darauf ändern Sie die Sortierrichtung. Die Baumansicht schalten Sie dazu erst wieder aus, denn sie verhindert ein sinnvolles Sortieren der Einträge.
Abbildung 4 zeigt eine nach CPU-Last sortierte Prozessliste. Ganz oben sehen Sie den Prozess loop-thread mit über 50 Prozent Last. Das kleine Testprogramm erzeugt auf einem Rechner mit Acht-Kern-CPU vier “abgestürzte” Threads, die sich unproduktiv in Endlosschleifen drehen und Rechenzeit verbrauchen. Sie belegen dadurch vier von den acht Kernen vollständig.

Abbildung 4: Hinter einem Prozess mit über 50 Prozent CPU-Last verbirgt sich unter Umständen ein abgestürztes Programm.
Die meisten Programme verbringen den Großteil ihrer Laufzeit damit, zu warten – auf Interaktionen wie Tastendrücke und Mausklicks oder auf Rückmeldungen langsamer Geräte wie Festplatten und Netzwerkkarten. Die eigentliche CPU-Nutzung ist niedrig. Es gibt jedoch Ausnahmen: Starten Sie beispielsweise kryptografische Berechnungen oder ein Kompressionswerkzeug wie Gzip, benötigen die entsprechenden Prozesse viel Rechenzeit.
Bei Anwendungen, die keine derart intensive CPU-Nutzung erwarten lassen, weist ein hoher Listenplatz in der Prozessliste jedoch darauf hin, dass es ein Problem gibt. Hat das Programm ein grafisches Fenster geöffnet und reagiert darin nicht mehr auf Klicks und andere Aktivitäten, ist es abgestürzt.
Abschuss
Haben Sie einen verdächtigen Prozess gefunden, der unproduktiv zu viel Rechenzeit nutzt, beenden Sie ihn. Bei GUI-Applikationen versuchen Sie es zunächst über das zugehörige Anwendungsfenster. Das ist vor allem bei Anwendungen mit geöffneten Dokumenten eine gute Idee, wie Textverarbeitungen oder Grafikprogrammen, damit Sie Änderungen noch auf Platte schreiben können. Manche Programme laufen aber als Dienst im Hintergrund und besitzen keine Oberfläche.
Nach einem Rechtsklick auf einen Eintrag in der Prozessliste öffnet sich ein Kontextmenü, das die zwei Optionen Beenden ([Strg]+[T], “terminate”) und Abwürgen ([Strg]+[K], “kill”) zum Beenden des Prozesses enthält. Bevor Sie eine dieser Tastenkombinationen nutzen, wählen Sie per Mausklick oder mit den Pfeiltasten den Prozess aus, den Sie beenden möchten.
Über Beenden schicken Sie nach einer Rückfrage (Abbildung 5) ein Signal an den Prozess, das ihn auffordert, sich zu beenden. Kann das Programm noch auf solche Signale reagieren, beendet es sich. Grafische Anwendungen fragen zum Teil vorher noch per Dialog ab, ob das wirklich passieren soll. Bei abgestürzten Anwendungen funktioniert dieser Mechanismus nicht. In diesem Fall senden Sie über Abwürgen ein aggressiveres Kill-Signal an den Prozess, das ihn in jedem Fall terminiert. In seltenen Fällen verbleibt der Prozess danach noch in der Prozessliste, Rechenzeit verbraucht er aber nicht mehr.
Beim Abwürgen (killen) eines Programms können Daten verloren gehen. Schießen Sie beispielsweise LibreOffice mit einem geöffneten und nicht gesicherten Dokument auf diese Weise ab, hat das Textprogramm keine Chance, die Datei zu sichern. Darum sollte das Abwürgen immer nur die letzte Option darstellen.
Speicher
Neben Rechenzeit ist der Arbeitsspeicher eine weitere wichtige Ressource, die das Betriebssystem idealerweise fair zwischen den laufenden Prozessen aufteilt. Um Anwendungen, die komplett außer Kontrolle geraten und extreme Speicheranforderungen stellen, kümmert sich der schon erwähnte OOM Killer. Er greift jedoch erst ein, wenn der gesamte Arbeits- und Auslagerungsspeicher belegt ist. Intensive Swap-Nutzung verlangsamt den Rechner jedoch ganz erheblich. Deswegen sollten Sie schon vorher eingreifen, um ein Ausbremsen zu verhindern.
Nach einem Rechtsklick auf eine der Spaltenüberschriften erscheint eine Auswahl von Spalten, die sich zur Anzeige hinzufügen oder daraus entfernen lassen. Um sich genauer über die Speicherbelegung der Prozesse zu informieren, aktivieren Sie Virtueller Speicher, Nicht auslagerbarer Speicher und Gemeinsamer Speicher. Die mittlere Bezeichnung ist irreführend lokalisiert: Gemeint ist eigentlich die RSS-Größe, also der faktisch nicht ausgelagerte Speicher.
Zwischenstopp
Eine Alternative zum Abbruch eines Programms besteht darin, es vorübergehend anzuhalten. Dafür stehen im Kontextmenü eines Listeneintrags die Einträge Anhalten ([Strg]+[S], “stop”) und Fortsetzen ([Strg]+[C], “continue”) zur Verfügung.
Ein Szenario, in dem sich diese Möglichkeit empfiehlt, besteht beispielsweise darin, wenn gerade eine aufwendige Berechnung wie das Rendern eines Videos läuft und Sie zwischendurch ein Bildtelefonat führen möchten. In diesem Fall leidet das Gespräch aufgrund des hohen Ressourcenverbrauchs beim Rendering unweigerlich unter Aussetzern und schlechter Bild- oder Tonqualität. Anstatt den Renderer komplett zu beenden und die bisher berechneten Ergebnisse zu verlieren, unterbrechen Sie ihn für die Dauer des Telefonats.
Ein angehaltener Prozess verbraucht per se keine Rechenzeit, eventuell vorhandene Kindprozesse aber schon. Wollen Sie beispielsweise den Browser Firefox komplett stoppen, genügt es keineswegs, nur den firefox-Prozess anzuhalten. Wechseln Sie stattdessen zur Baumansicht, markieren Sie Firefox und alle unterhalb davon angeordneten Prozesse, und halten Sie sie dann über das Kontextmenü alle zusammen an.
Grafische Übersicht
Um den Systemzustand im Blick zu behalten, schalten Sie in den Reiter Ressourcen um. Dort sehen Sie drei Anzeigen für die aktuelle Auslastung der Prozessorkerne, des Speichers samt Swapspace sowie des Netzwerks (Abbildung 6). Ganz oben unter CPU sehen Sie für jeden Prozessorkern eine separate Kurve. In der Mitte finden Sie zwei Kurven für die Auslastung des Arbeitsspeichers (RAM) und der Swap-Partition. Die Rubrik Netzwerk-Chronik zeigt den ein- und ausgehenden Netzwerkverkehr an. Solange Sie hier nur gelegentliche Ausschläge nach oben beobachten, ist alles im grünen Bereich. Eskalieren die CPU- oder Speicherkurven, wechseln Sie zurück zur Detailansicht auf dem Reiter Prozesse und beheben die Probleme.

Abbildung 6: Prozessorlast, Speicherverbrauch und Netzwerk-Verkehr behalten Sie in der Rubrik Ressourcen im Blick.
Alternativen
Das hier beschriebene Gnome-Systemmonitor wird auf Linux-Systemen mit einem anderen Desktop nicht standardmäßig installiert. Arbeiten Sie zum Beispiel unter KDE Plasma, finden Sie dort in Form des Plasma-Systemmonitors (plasma-systemmonitor) ein passendes Pendant. Soll es unbedingt das Gnome-Tool sein, installieren Sie unter Ubuntu das Paket gnome-system-monitor. Im Terminal nutzen Sie ansonsten die Werkzeuge Top und Htop, die unabhängig von Distribution und Desktop-Oberfläche arbeiten. Das Duo liefert dieselben Informationen und bietet ebenfalls die Möglichkeit, auf Prozesse einzuwirken, Sie müssen aber auf ein wenig Komfort verzichten. (tle)
Glossar
-
RSS
-
Die Resident Set Size eines Prozesses gibt an, wie viel physischen Speicher (RAM) er tatsächlich belegt. Dieser Wert liegt meist deutlich unter dem des virtuellen Speichers, enthält aber den von Bibliotheken genutzten Platz im RAM.







