htop: Einführung in den „Task-Manager“ für GNU/Linux Distributionen wie Debian, Raspberry Pi OS uvm.

Als Video ansehen
Bereitgestellt über YouTube

htop: Einführung in den „Task-Manager“ für GNU/Linux Distributionen wie Debian, Raspberry Pi OS uvm.

Windows-Nutzer verwenden den Task-Manager, um Informationen über die Auslastung des Systems, laufende Prozesse usw. zu erhalten. Unter GNU/Linux sowie anderen Unix-ähnlichen Betriebssystemen gibt es dafür seit Anfang der 1990er Jahre top. 2004 erschien mit htop eine Alternative, die mehr Komfort und Funktionen bietet: Neben einer übersichtlichen Darstellung wird beispielsweise die Auslastung grafisch angezeigt. Sogar die Bedienung mit der Maus ist möglich. Dieser Beitrag bietet eine Einführung in htop mit Fokus auf GNU/Linux-Distributionen, die von Debian abstammen, wie unter anderem Ubuntu oder auch das Raspberry Pi OS.

Spricht noch etwas für das klassische top?

In meinen Augen nur, dass es auf nahezu jedem System verfügbar ist. Gerade wenn man sich auf Geräten mit wenig Leistung (z.B. Routern) befindet und/oder die Installation von neuer Software durch den Hersteller eingeschränkt wurde, hat man unter Umständen keine Möglichkeit, htop nachzuinstallieren. Wer eigene Systeme mit einem freien GNU/Linux (Virtueller Server, Heimserver, Raspberry Pi usw.) betreibt, ist dagegen in der Regel nicht auf top angewiesen. Hier lässt sich htop nachinstallieren, wodurch man von dessen Vorteilen profitiert.

Wer eine Desktopumgebung nutzt, kann alternativ auch auf die dort vorhandene grafische Desktopanwendung zurückgreifen. Xfce bietet mit dem Taskmanager beispielsweise Diagramme zu Prozessor- und Arbeitsspeicherauslastung sowie eine Auflistung aller laufenden Prozesse. Abhängig vom Anwendungszweck reicht dies dort eventuell bereits aus, wenngleich htop mehr Funktionen bietet. Außerdem erfordert es keine grafische Oberfläche: Sowohl htop als auch top sind Konsolenprogramme und laufen daher nahezu überall – auch auf Servern oder Raspberry Pis.

Installation von htop

Während top unter den meisten GNU/Linux-Distributionen vorinstalliert ist, muss htop nachinstalliert werden. Es befindet sich unter Debian allerdings in den offiziellen Paketquellen, sodass es einfach mit folgendem Befehl nachinstalliert werden kann. Anschließend lässt es sich mit dem gleichnamigen Befehl aufrufen:

sudo apt install htop
htop

Einführung in die htop Oberfläche

Die Benutzeroberfläche ist an top angelehnt. Wer damit bereits gearbeitet hat, wird sich schnell zurecht finden. Sie lässt sich grob in 5 Bereiche aufteilen:

  1. Die Prozessor-Auslastung, standardmäßig aufgeteilt in die einzelnen Kerne (0 = erster Kern, 1 = zweiter Kern usw). Farbliche Unterschiede kennzeichnen die Priorität: Blau = gering, grün = normal, rot = Kernel, usw. Man kann dies um eine gesamte Auslastung ergänzen, dazu weiter unten mehr.
  2. Arbeitsspeicher und Swap. Auch beim Arbeitsspeicher zeigen die Farben weitere Details: Grün = benutzt, blau = Puffer und gelb steht für den Cache.
  3. Laufende Prozesse/Threads, der System Load (Anzahl der Prozesse, die gerade CPU-Zeit nutzen oder darauf warten), aktive Prozesse die gerade CPU-Zeit belegen sowie die Uptime des Systems (Zeit seit dem letzten Neustart)
  4. Übersicht aller laufenden Prozesse mit weitreichenden Informationen wie z.B. Prozess-ID, Benutzer der diesen Prozess ausführt, Ressourcenverbrauch (RAM/CPU), Ausführungszeit, Befehl mit ggf. Parametern, usw.
  5. Das Menü zeigt alle verfügbaren Funktionen: Anpassen der Oberfläche, Suchen, Filtern, Baum-Ansicht um Unterprozesse optisch zu erkennen sowie die Möglichkeit, einen ausgewählten Prozess zu beenden. Die Beschreibung der Spalten findet sich hier.

Grundlegende Funktionen: Prozesse finden, filtern und beenden & mehr

Zur Demonstration habe ich auf einem Ubuntu 22 LTS Server den Webserver Nginx über den folgenden Befehl installiert. Dies dient lediglich als Beispiel-Prozess, den wir im Folgenden mit htop z.B. finden und beenden werden. Natürlich könnt ihr jeden anderen laufenden Prozess nehmen, der unproblematisch ist. Als zustandsloser statischer Webserver ist auch das harte beenden kein Problem. Außerdem ist er durch seine Architektur perfekt geeignet, um verschiedene Funktionen zu z.B. Kind-Prozessen zu demonstrieren.

sudo apt install nginx

In htop können wir mit F3 (oder einen Klick in der Menüleiste unten) nach diesem Prozess suchen. In diesem Beispiel gebe ich nginx ein. Der Unterschied zum Filtern liegt darin, dass bei der Suche die Treffer in Echtzeit aus der Liste aller Prozesse hervorgehoben werden. Da sich htop per Tastatur und Maus bedienen lässt, hat man jeweils die Wahl, ob man die angezeigte Taste drückt – etwa F3 um den nächsten Treffer anzuzeigen, falls es mehr als einen Prozess gibt (was bei nginx der Fall ist). Oder ob man mit der Maus auf Next (nächstes Ergebnis) oder Prev (vorheriges) klickt. Dies muss von eurem Terminal unterstützt werden, was unter GNU/Linux in der Regel kein Problem sein sollte. Mit der [ESC] Taste kann man solche aufgerufenen Funktionen wieder verlassen.

Das Filtern (F4) funktioniert ähnlich. Der Unterschied: Bei der Suche werden die Ergebnisse in der Liste aller Prozesse hervorgehoben, man sieht die anderen Prozesse also weiterhin. Die Filter hingegen blenden alle Prozesse aus, auf die der Suchbegriff nicht zutrifft. Durch den Filter wird in diesem Beispiel schnell klar, dass Nginx einen Master-Prozess mit root-Rechten (für die privilegierten Ports 80/443) startet. Dieser wiederum startet vier Arbeitsprozesse, welche mit eingeschränkten Rechten im Kontext des Benutzers www-data laufen und sich um eingehende HTTP-Anfragen kümmern. Bei der reinen Suche wäre dies weniger übersichtlich.

Diese Architektur von einem Hauptprozess, der mehrere Kind-Prozesse startet, ist recht verbreitet – vor allem bei Serverdiensten. Ich finde es daher hilfreich, die Tree Ansicht statt der standardmäßigen List Ansicht mit F5 zu aktivieren. Im Reiter Command rechts zeigt htop als Baumstruktur an, welche Prozesse wohin gehören:

Möchte man einen Prozess beenden, kann man diesen wahlweise mit den Pfeiltasten auswählen – er wird dann farblich hinterlegt. Oder man nutzt Suche bzw. Filter, anschließend [ENTER] drücken, damit die untere Menüleiste wieder erscheint. Über F9 kann der ausgewählte Prozess beendet werden. Dafür nutzt htop die unter Linux gängigen Signale (Signals). Am wichtigsten sind 15 SIGTERM (fordert den Prozess dazu auf, sich zu beenden – er entscheidet, was er tut) und 9 SIGKILL (das Betriebssystem beendet den Prozess sofort). SIGTERM sollte daher die erste Wahl sein, während SIGKILL bei hängenden Programmen hilft.

Hier sind zwei Dinge zu beachten: Prozesse können nur mit den notwendigen Rechten beendet werden, d.H. der angemeldete Benutzer hat diese gestartet. Bei Nginx ist dies nicht der Fall. Um den Webserver zu beenden, muss man entweder zum entsprechenden Nutzer wechseln oder htop mit Root-Rechten (z.B. per sudo) starten. Kind-Prozesse werden zudem durch den übergeordneten Prozess gesteuert, sodass dieser sie ggf. automatisch neu startet. Wer den Webserver beenden möchte, sollte an dieser Stelle den Hauptprozess wählen.

Ist ein System ausgelastet, kann die Sortierung (F6) hilfreich sein. Nach PERCENT_CPU oder PERCENT_MEM lässt sich etwa herausfinden, welche Prozesse den Prozessor am stärksten belasten, respektive am meisten Arbeitsspeicher verbrauchen. Für diese häufig genutzten Kriterien gibt es Tastenkürzel [SHIFT] + [m] sortiert nach RAM-Verbrauch, [SHIFT] + nach CPU-Auslastung. Ihr müsst jeweils die rechte [SHIFT] Taste unter [Enter] verwenden.

Ebenfalls nützlich kann es sein, mit der Taste u nach Benutzern zu filtern. Es werden dann nur Prozesse angezeigt, die im Kontext des gewählten Nutzers laufen.

Die Menüeinträge Nice – und Nice + sind für die Niceness. Damit lässt sich die Priorität eines Prozesses beeinflussen, oder anders ausgedrückt: Welcher Prozess bevorzugt Rechenzeit bekommt. Der aktuelle Wert wird links in der Spalte NI angezeigt. In den meisten Fällen ist eine manuelle Anpassung nicht nötig.

Anpassungen

Entsprechend dem Menü lässt sich mit F2 die Oberfläche anpassen. Nachdem man mit dem grundlegenden Aufbau sowie den Funktionalitäten vertraut ist, macht dies Sinn: Es gibt weitere nützliche Werte, die angezeigt werden können. Im linken Bereich Setup (1) sind die Einstellungen in vier Kategorien gruppiert.

Meters zeigt Messwerte wie Prozessor-Auslastung, Arbeitsspeicherverbrauch usw. im oberen Bereich an. Mit der Pfeiltaste nach unten gelangt man in dieser Box zum nächsten Eintrag Display options. Er legt allgemeine Einstellungen für die gesamte Oberfläche fest. Beispielsweise kann man dort die Baumansicht (Tree view) aktivieren, sodass sie bei jedem Start von htop automatisch aktiv ist. Oder die Taktrate des Prozessors anzeigen. Über die Pfeil-Rechts Taste gelangt man in den rechten Bereich, mit der Leertaste kann eine Einstellung aktiviert bzw. deaktiviert werden.

Colors erlaubt es, andere Farbkonstellationen zu wählen. Mit Monochromatic lassen sich auf Wunsch auch alle Farben abschalten – dies halte ich für wenig Sinnvoll. Neben der Optik leidet zudem die Übersicht.

Mit Columns könnt ihr die angezeigten Spalten der Prozessliste anpassen und hierfür aus einer Vielzahl von Daten wählen. Beispielsweise kann man das Arbeitsverzeichnis des Prozesses (CWD) oder I/O Werte anzeigen lassen. Wieder wird über die Pfeiltasten nach rechts/links navigiert. Bei den verfügbaren Spalten (Available Columns) mit F5 eine Spalte zu den aktiven in der Mitte hinzufügen.

Es gibt also viele Möglichkeiten, um htop an die eigenen Bedürfnisse anzupassen. Sämtliche Einstellungen speichert das Programm in der Datei ~/.config/htop/htoprc, sodass man diese Änderungen teilen/sichern kann. Im Folgenden möchte ich den Fokus vor allem auf die Messwerte legen, die euch eine bessere Übersicht über den Status des Systems geben.

Zusätzliche Messwerte (meters) oben anzeigen

Hierfür wählen wir links bei Setup (1) Meters aus und navigieren mit Pfeil nach rechts in die dargestellten Spalten. (2) und (3) beziehen sich auf die spalten im oberen Bereich, die Status-Informationen anzeigen. Left column (2) ist somit die linke Spalte, welche standardmäßig die Auslastung der Prozessorkerne sowie Arbeitsspeicher/Swap anzeigt. Jedes Element kann verschoben (ENTER) oder entfernt (ENTF) werden.

Um neue Messwerte anzuzeigen, mit den Pfeiltasten ganz nach rechts zu Avaliable Meters (4) navigieren. Je nach Bildschirmauflösung ist die Liste länger als angezeigt, mit den Pfeiltasten oder dem Mausrad kann man bis ans Ende navigieren. Besonders nützliche finde ich CPU average. Statt die Auslastung der einzelnen Kerne seht ihr dort die Gesamtauslastung, die auf den ersten Blick aussagekräftiger ist. Mit [ENTER] kann man den Eintrag auswählen und wahlweise per Pfeiltaste in der linken oder rechten Spalte platzieren. Die Vorschau oben zeigt in Echtzeit, wie dies später aussehen wird. Erneutes Drücken von [ENTER] legt das Element ab.

Generell empfehlen sind meiner Meinung nach Disk IO [Text], Network IO [Text] und CPUs (1&2/2) [Bar]. Letzteres zeigt die Auslastung der einzelnen Kerne in Balken auf halber Breite an. Für ein System mit 4 Kernen wie hier im Beispiel belegt es somit nur 2 statt 4 Zeilen gegenüber der vollen Breite. Je mehr Kerne der Prozessor hat, um so sinnvoller sind alternativ die noch kleineren Darstellungen, um nicht unnötig Platz zu Verschwenden.

Wer lieber Diagramme statt Text bevorzugt, der kann ein Widget auswählen und die Leertaste drücken. Es stehen jeweils die Darstellungen Text, Graph, LED und Bar zur Verfügung. Hier beispielsweise die durchschnittliche Prozessorauslastung als Diagramm in der Mitte:

Ist man mit den Anpassungen zufrieden, kann man sie mit F10 (oder unten auf Done klicken) verlassen. Ich habe hier eine kompakte Ansicht für die Prozessorkerne inklusive der Gesamtauslastung sowie Netzwerk/Laufwerksauslastung erstellt. Dies kann man individuell ausbauen.

Wer htop verlassen und wieder zur Konsole zurückkehren möchte, nutzt wahlweise unten Quit, oder F10 bzw die q Taste (für quit).

Leave a Reply