2078111

Die Linux-Shell-Spezialitäten des Monats

06.07.2015 | 12:12 Uhr |

Wir stellen kleine, aber nützliche Ergänzungen für die Kommandozeile (Shell) vor, die den Linux-Alltag an wichtigen Stellen erleichern.

Drahtlosnetzwerk: WLAN-Monitor für die Shell

Im Drahtlosnetzwerk kann das Signal recht großen Schwankungen unterworfen sein, je nachdem, wie die Antennen von Sender und Empfänger ausgerichtet sind. Die Signalqualität lässt sich auch auf einem Linux-System wie dem Raspberry Pi, der meist nur per Shell (SSH) im Netzwerk zu erreichen ist, gut überprüfen.

Für einen kurzen Blick auf die Signalstärke des WLAN-Adapters sind keine besonderen Tools nötig. Es genügt, mit dem Kommando

cat /proc/net/wireless

die Gerätedatei „wireless“ anzusehen: Diese liefert eine hübsche Tabelle mit Messwerten. So gibt die Spalte „Quality“ die Signalqualität aus und unterteilt diese in die Werte „link“, „level“ und „noise“. Der Wert von „link“ gibt die errechnete Verbindungsqualität des WLAN an und ist der interessante Parameter. Unter Wert „level“ ist die Empfangssignalstärke (RSSI) angegeben, und „noise“ zeigt das unvermeidliche Rauschen. Dies ist stets eine Momentaufnahme, und nur das wiederholte Aufrufen schafft Klarheit über die Verbindungsqualität über einen längeren Zeitraum. Solche Auswertung der WLAN-Signalstärke gelingt besser mit dem textbasierten WLAN-Monitor Wavemon . Das Tool ist in den Paketquellen von Debian, Ubuntu und auch in Raspbian bereits enthalten. Eine Installation ist mit

sudo apt-get install wavemon

ohne Umstände erledigt. Auch Fedora und Open Suse haben ein Paket für Wavemon im Standard-Repertoire. Der Aufruf in der Shell erfolgt einfach durch wavemon.

Die Oberfläche ist in mehrere Seiten aufgeteilt: Die Einstiegsseite zeigt Empfangsqualität und Signalpegel in laufend aktualisierten Balken. Mit der Taste F2 gelangt man zu einer Diagrammansicht.

F3 funktioniert nur, wenn Wavemon mit root-Rechten oder mit vorangestelltem sudo gestartet wurde, und listet verfügbare Drahtlosnetzwerke anhand ihres Pegels auf. Mit F10 beenden Sie das Programm.

Lese-Tipp: Sieben neue Desktop-Tipps für Linux

Datenträger beschreiben: Fortschrittsanzeige für das Tool dd

Universeller Pipe Viewer: Das Tool verschafft dem Programm dd eine Fortschrittsanzeige. Ab Version 8.24, die 2015 überall Einzug erhalten wird, wird dd selbst gesprächig.
Vergrößern Universeller Pipe Viewer: Das Tool verschafft dem Programm dd eine Fortschrittsanzeige. Ab Version 8.24, die 2015 überall Einzug erhalten wird, wird dd selbst gesprächig.

Obwohl dd zum Unix-Urgestein gehört und schon Ende der 70er-Jahre in Systemen von IBM enthalten war, leistet es auch heute noch gute Dienste für die Übertragung von Images auf SD-Karte oder zum Erstellen bootfähiger USB-Sticks anhand von ISO-Dateien. Ein Schönheitsfehler ist es, dass dd keine Statusanzeige der aktuellen Arbeit liefert, was bei langwierigen Übertragungen von Images einigermaßen irritierend ist.

Auch die GNU-Version von dd unter Linux gibt wie das Original nur zum Abschluss der Übertragung einen knappen und etwas obskuren Statusbericht aus. Es gibt aber ein Zusatz-Tool für die Kommandozeile, das die Arbeit von dd mit einer Fortschrittsanzeige ergänzt: Der Pipe Viewer (pv) versteht sich darauf, den Datenstrom in einer Befehls-Pipeline mit einem Fortschrittsbalken zu quantifizieren. Das Tool steht in allen verbreiteten Linux-Distributionen zur Installation bereit, in Debian/Ubuntu etwa mit diesem Kommando:

sudo apt-get install pv

Um pv einzusetzen, übergibt man mit einfach die Datei, die es zu schreiben gilt. Eine Pipe (|) verknüpft den Output von pv mit dd. So schreibt

pv datei.iso|sudo dd of=/dev/sddbs=4M oflag=sync

die Image-Datei „datei.iso“ auf den Datenträger „/dev/sdd“ und zeigt den Fortschritt gemäß der Abbildung oben.

Arbeitsspeicher: Wie viel RAM braucht ein Programm?

Der Kernel weist jedem Prozess seinen eigenen virtuellen Speicherbereich zu, der auch Speicherseiten enthalten kann, der mit anderen Programmen geteilt wird. Das ist oft der Fall, wenn mehrere Programme auf die gleichen Bibliotheken zugreifen. Daher ist es gar keine triviale Aufgabe, den tatsächlichen Speicherbedarf eines laufenden Programms genau zu bestimmen.

Die Ausgabe der Prozess- und Systemmonitore top und htop auf der Kommandozeile liefern eine detaillierte Aufstellung der Speicherwerte. Generell gibt es unter Linux drei Speicherwerte, die auch top und htop in ihren Spalten zu jedem Prozess angeben: Virt, RES und SHR.

Diese erlauben zumindest eine Einschätzung des Speicherbedarfs pro Prozess (siehe Kasten „Die Speicherwerte Virt, RES und SHR“).

Genauere Werte zur Speichernutzung liefert ein Debugger wie Valgrind oder auch eine Analyse der Kernel-Meldungen zur Speicherbelegung eines einzelnen Prozesses. Diese Auswertung kann das Python-Script „ ps_mem.py “ übernehmen. Es erstellt eine Liste mit einer klaren Angabe des eindeutigen Speicherbedarfs für jeden Prozess und kann auch auf ein einzelnes Programm angewendet werden. „ps_mem.py“ verlangt nach einem Aufruf als root oder mit vorangestelltem sudo. Da der Quellcode aber offen einsehbar auf Github liegt und von einem vertrauenswürdigen Entwickler bei Red Hat stammt, reißt dies aber kein Sicherheitsloch. Der Befehl

wget https://raw.github.com/pixelb/ps_mem/master/ps_mem.py

lädt das Script ins aktuelle Verzeichnis herunter und

chmod +x ps_mem.py

macht es aus ausführbar. Mit

sudo ./ps_mem.py

erstellt es eine Prozessliste mit dem genau berechneten Speicherbedarf, der unter „Private“ den Speicher pro Prozess angibt, unter „Shared“ den Anteil der geladenen, geteilten Bibliotheken und in der Spalte „RAM used“ schließlich den exakten RAM-Bedarf eines Programms.

Lese-Tipp: Die Linux-Netzwerkleistung immer im Blick

Die Speicherwerte Virt, RES und SHR

Ein Blick in einen Prozessmonitor zeigt für jeden laufenden Prozess die Speicherwerte Virt, RES und SHR. Es handelt sich um Vergleichsgrößen, welche der Speicherverwaltung des Kernels entsprechen, aber nicht den tatsächlichen Speicherbedarf eines Programms wiedergeben.

Virt zeigt den virtuellen Speicher eines Prozesses. Der Wert setzt sich aus verschiedenen addierten Speicherbereichen zusammen und ist die Gesamtmenge des Speichers, auf die der Prozess gerade Zugriff hat, inklusive geöffnete Dateien und geteilte Programmbibliotheken. Dies ist nicht der tatsächliche Wert, wieviel RAM ein einzelnes Programm belegt, ist deshalb entsprechend hoch und sagt am wenigsten über den realen Speicherbedarf aus.

RES ist eine Abkürzung für „Resident Size“ und damit annähernd die tatsächliche Menge an RAM, die ein Prozess belegt, inklusive Bibliotheken. Unter top und htop leitet sich die prozentuale Angabe %MEM von diesem Wert ab.

SHR zeigt lediglich den Anteil von Virt an, den ein Prozess mit anderen Programmen teilen kann, wenn gemeinsame Bibliotheken und Dateien geladen sind.

Die Top-20 der Linux-Distributionen: So finden Sie Ihr Lieblings-Linux

0 Kommentare zu diesem Artikel
2078111