Unter Linux gibt es keinen Mangel an Prozessmanagern und Systemüberwachungswerkzeugen. Das von Bashtop abgeleitete Bpytop sticht jedoch nicht nur optisch aus der Menge hervor.
Gerade bei einem für mehrere Benutzer gleichzeitig zugänglichen System wie Linux ist es wichtig, die vorhandenen Ressourcen im Blick zu behalten. Läuft eine grafische Anwendung eines lokal angemeldeten Nutzers Amok und blockiert alle Kerne der CPU? Lässt ein gerade via SSH eingeloggter Benutzer ein rechenintensives Skript laufen und macht so das Arbeiten für die restlichen Nutzer des Servers quälend langsam? Schreibt ein wildgewordener Prozess immer weiter kaputte Daten auf die Festplatte und lässt sie allmählich volllaufen?
Solche Fragen lassen sich mit verschiedenen Monitoring-Tools beantworten. Üblicherweise installieren die gängigen Distributionen Top im System vor. Das Programm liefert einen Überblick der aktiven Prozesse und misst die CPU-Last sowie die Belegung des Arbeitsspeichers. Ähnliche Funktionen bietet Htop in einer optisch aufgehübschten Form. Andere Programme zeigen die Netzwerkauslastung an (Iftop) oder ermitteln, welche Anwendungen oder Prozesse intensiv auf die Festplatte schreiben (Iotop).
Bashtop [1] kombiniert viele dieser Funktionen in einer textbasierten Oberfläche. Das Programm zeigt die CPU-Last sowohl numerisch als auch in Form einer Pseudografik an. Es listet die aktiven Prozesse zusammen mit deren Speicher- und CPU-Verbrauch, visualisiert die Durchsatzraten der einzelnen Netzwerkschnittstellen und einiges mehr. Das Programm hat allerdings einen Haken: Wie der Name schon andeutet, wurde es komplett als Bash-Skript programmiert. Das macht zum einen die weitere Wartung und Entwicklung kompliziert, zum anderen bremst es das Programm aus. Mit Bpytop [2] legt der Autor nun einen offiziellen Python-Port seines Werkzeugs vor.
Installation
Bpytop wurde erst im August 2020 vorgestellt. Dementsprechend gibt es noch keine Distribution, die das Programm in ihren Paketquellen führt. Einzig Arch Linux und dessen Derivate wie Manjaro bieten das Programm an, allerdings lediglich im Arch User Repository. Für die Installation auf solchen Systemen greifen Sie auf einen AUR-Helper wie etwa Yay zurück. Das Kommando yay -S bpytop spielt Bpytop mitsamt allen Abhängigkeiten ein. Für Ubuntu gibt es ein Snap-Paket [3]. Es wäre allerdings widersinnig, ein schlankes Kommandozeilenwerkzeug über ein Monster wie Snap einzurichten. Daher empfehlen wir die manuelle Installation.
Mit den Befehlen aus den ersten vier Zeilen von Listing 1 laden Sie die Build-Abhängigkeiten auf das System und bauen Bpytop aus dem von Github heruntergeladenen Quellcode. Heben Sie den Build-Ordner bpytop/ auf, lässt sich das Programm mit Kommando aus Zeile 5 bei Bedarf wieder sauber aus dem System entfernen. Nach der Installation rufen Sie das Programm mit dem Befehl bpytop aus dem Terminal heraus auf. Einen Eintrag in die Startmenüs der Desktop-Umgebung gibt es nicht.
Listing 1
$ sudo apt install git build-essential python3-distutils python3-psutil $ git clone https://github.com/aristocratos/bpytop.git $ cd bpytop $ sudo make install $ sudo make uninstall
Bedienung
Der Bildschirm von Bpytop teilt sich in mehrere Bereiche (Abbildung 1). Oben zeigt das Programm die Auslastung und Temperatur der einzelnen Kerne (siehe Kasten “Sensoren”) sowie den Verlauf der Last als Graph an. Links darunter finden Sie die Belegung des Arbeitsspeichers und der in das System eingebundenen Datenträger. Im Kasten unterhalb davon stellt Bpytop die aktuellen Übertragungsraten einer ausgewählten Netzwerkkarte sowie den entsprechenden Verlauf dar. Der Kasten rechts umfasst eine Liste aller aktiven Prozesse zusammen mit deren Speicherverbrauch, der resultierenden CPU-Last, der Prozess-ID, dem Benutzer, der Anzahl der Threads sowie weiteren Daten.

Abbildung 1: Bpytop zeigt zahlreiche Informationen rund um das System an. Das Standarddesign ist ein wenig dunkler; wir griffen zwecks besserer Lesbarkeit zu einem hellen Theme.
Sensoren
Damit Bpytop neben der Prozessorauslastung auch die Temperaturen der einzelnen CPU-Kerne anzeigt, benötigen Sie LM-Sensors. Das Paket liest die Temperatursensoren zahlreicher CPUs und Mainboards aus. Dazu spielen Sie LM-Sensors auf dem System ein (auf Debian-basierten Distributionen über sudo apt install lm-sensors) und starten dann mit sudo sensors-detect die Erkennung der Sensoren. In der Regel können Sie dabei die Vorgaben mit [Eingabe] übernehmen. Am Ende identifiziert das Skript die für das System nötigen Kernel-Module und bietet an, diese in /etc/modules oder /etc/conf.d/lm_sensors (je nach Distribution) einzutragen, sodass das System sie automatisch beim Booten lädt. Spätestens nach einem Neustart zeigt dann das Kommando sensors die Temperaturen von CPU und Mainboard an, und auch Bpytop liefert nun die Temperaturen.
Innerhalb der Anwendung agieren Sie nun mit der Maus oder mit der Tastatur. Grau eingefärbte Buchstaben markieren Dialoge und Schalter – hier müssen Sie genau hinsehen. So wechseln Sie zum Beispiel mit [M]+ oder einem Klick auf mini in einen reduzierten Modus, der nur noch die Taskleiste und den CPU-Verlauf anzeigt (Abbildung 2). Mit [Umschalt]+[M] oder einem Klick auf Menu öffnen Sie ein Menü, über das Sie die Einstellungen (OPTIONS) sowie die Hilfe erreichen oder das Programm beenden (Abbildung 3). Mit [B]+ oder [N] beziehungsweise einem Klick auf <b beziehungsweise n> wechseln Sie die im Net-Bereich angezeigte Netzwerkkarte.

Abbildung 2: Der Mini-Modus entfernt die Anzeigen zur Festplattenbelegung und zur Auslastung der Netzwerkkarte. So bleibt mehr Platz für die auf dem System aktiven Prozesse.

Abbildung 3: In den detaillierten Einstellungen von Bpytop haben Sie die Wahl zwischen zehn verschiedenen Themes sowie zahlreichen anderen Konfigurationsmöglichkeiten.
In den Einstellungen wählen Sie unter Color theme zwischen zehn verschiedenen Farbvarianten. Sie schalten mit den Pfeiltasten nach links und rechts zwischen den Optionen um. Zudem gibt es die Möglichkeit, den Mini-Modus permanent zu aktivieren oder den Farbverlauf in der Prozessliste zu deaktivieren (Proc gradient). Bei Bedarf lassen sich unter Disk filter zusätzliche Laufwerke zur Anzeige einbinden oder auch ausschließen. Hinweise zu den einzelnen Optionen liefert das Programm in der rechten Spalte.
Prozesse
Den meisten Platz verwendet Bpytop zur Anzeige der Prozessliste. In den Voreinstellungen sortiert es die Liste nach CPU-Auslastung. Mit den Pfeiltasten nach links und rechts oder einem Klick auf die eckigen Klammern neben dem aktuellen Modus (also etwa cpu lazy) ändern Sie die Sortierung.
Mit [R]+ oder reverse drehen Sie die Sortierung um; mit [T]+ oder tree aktivieren Sie eine Baumdarstellung. Mit [F]+ und einem Suchbegriff filtern Sie bestimmte Prozesse aus dem Datenwust heraus. Mit [Eingabe]+ schließen Sie den Filter ab, sodass Sie die Liste der Treffer mit den Pfeiltasten nach oben und unten durchstöbern können. Bei Bedarf leeren Sie den Filter mit [Entf] wieder.
Haben Sie einen Prozess in der Liste ausgewählt, erscheint unterhalb der Box eine Menüleiste mit info, terminate (sendet Signal SIGTERM), kill (SIGKILL) und interrupt (SIGINT). Die Aktionen starten Sie entweder mit einem Klick auf den entsprechenden Eintrag oder über das jeweilige hervorgehobene Tastenkürzel, also [Eingabe]+[T]+[K] oder [I]. Lassen Sie beim Beenden von Prozessen jedoch Vorsicht walten, Rückfragen gibt es keine. Schießen Sie den falschen Prozess ab, gehen eventuell ungesicherte Daten verloren.
Fazit
Bpytop erfindet das Rad nicht neu – ähnliche Funktionen bieten Tools wie Top, Htop oder Glances [4] schon länger. Doch ein weiterer Pfeil im Köcher stört mit Sicherheit nicht. Die in Python entwickelte Neuauflage von Bashtop funktioniert auf aktuellen Linux-Systemen reibungslos und macht sowohl in einem virtuellen Terminal als auch über SSH einen tadellosen Eindruck. Dabei zeigt der Entwickler viel Engagement und reagiert zügig auf Fehlermeldungen und Verbesserungsvorschläge. Zudem kann man ihn über soziale Medien wie etwa Reddit [5] schnell erreichen. (cla)
Infos
-
Glances: Erik Bärwaldt, “Wachhund”, LU 02/2020, S. 86, https://www.linux-community.de/43954
-
gnmAristocrat: https://www.reddit.com/user/gnmAristocrat





