Konsolen-Tipps

Knackige Konsolentricks für Linux-Systeme

14.11.2015 von David Wolski
Auch wenn Sie lieber Mauszeiger über den Desktop schubsen: Die Konsole (Shell) eines Linux-System ist eine mächtige Hilfe, um mit den richtigen Befehlen auch diffizile und systemnahe Aufgaben zu erledigen.

Datenträgerverwaltung: Blockorientierte Geräte mit lsblk anzeigen

Wechseldatenträger wie USB-Laufwerke und SD-Karten bekommen nach dem Einhängen im Linux-System zwar immer einen wiederkehrenden, gleichlautenden Mountpunkt, der sich nach der Datenträgerbezeichnung richtet, jedoch keine feste Gerätekennung.

Der Device-Manager udev des Linux-Kernels weist frisch angeschlossenen, Hot-Plug-fähigen Datenträgern (blockorientierten Geräten) gemäß vordefinierter Regeln stets die nächste freie Laufwerkskennung zu. Ist „/dev/sdb“ bereits vergeben, bekommt ein USB-Stick beispielsweise „/dev/sdc“ zugewiesen. Ist diese auch schon belegt, stattdessen „/dev/sdc“ und so fort. Bei direkten Laufwerkzugriffen, etwa um mit Unetbootin oder dd ein Image auf eine SD-Karte oder einen Stick zu schreiben, ist aber die genaue Kenntnis dieser Gerätebezeichnung erforderlich.

Den schnellsten Weg, die Kennung eines blockorientierten Geräts herauszufinden, bietet der Befehl „lsblk“ in der Eingabeaufforderung. Gegenüber dem einfachen Befehl „mount“, der ohne Parameter ebenfalls Mountpunkte anzeigt, hat lsblk den Vorteil der besseren Übersicht hinsichtlich der Gerätebezeichnung, Größe und der vorhandenen Partitionen. lsblk zeigt diese Infos in einer hübschen Baumstruktur an, die eine eindeutige Identifikation eines Wechseldatenträgers ganz einfach macht. Damit in der Liste der vollständige Gerätepfad erscheint, also der zugewiesene Device Node unter „/dev/“, der etwa bei der Verwendung von dd nötig ist, rufen Sie den Befehl mit dem Parameter „–p“ auf:

lsblk -p

Vergessen Sie nicht, vor dem Schreiben auf einen Wechseldatenträger mit dd dessen Partitionen zuerst auszuhängen.

Befehlsausgaben formatieren: Ungeordnete Listen als Tabelle anzeigen

Nicht jede Programmausgabe in der Shell präsentiert wohlgeordnete Listen und Tabellen.

In Spalten und Zeilen geordnet: In einer Befehlskette angehängt schnappt sich columns die Textausgabe des vorhergehenden Kommandos und formatiert diese übersichtlich in Tabellenform.

Oft geraten die Informationen, die ein Befehl ausgibt, geradezu unübersichtlich – so etwa die Ausgabe des Befehls „mount“, der alle Mountpunkte, deren Dateisysteme und Optionen anzeigt. Zur besseren Präsentation unübersichtlicher Datenkolonnen gibt es ein eigenes Tool, das Text-Input in der Kommandozeile sauber in Spalten und Tabellen formatiert: Der Befehl „columns“ arbeitet mit Tabulatoren, um Datensätze zu formatieren, und wird einfach jenem Kommando per Pipe angehängt, das die Ausgabe produziert. Im Fall von mount kann ein angehängtes „columns“ beispielsweise mit

mount | column -t

eine tabellarische Übersicht der Mountpunkte erstellen.

Internetverbindung: MTU mit tracepath überprüfen

Im Ethernet dürfen einzelne Netzwerkpakete laut Spezifikation bis zu 1500 Byte Daten als Nutzlast enthalten. Dieser Wert, MTU oder Maximum Transmission Unit, hat sich deshalb als Standardgröße für Pakete in der voreingestellten Netzwerkkonfiguration von Linux, BSD und Windows durchgesetzt. Im lokalen Netz sind 1500 Byte ein guter Kompromiss zwischen Nutzlast und Kontrolldaten.

Paketablauf zu einem Ziel-Host verfolgen: Das Kommandozeilenwerkzeug tracepath zeigt neben den durchlaufenen Hops (Zwischenstationen) auch die MTU-Größen (pmtu) der Netzwerkpakete an.

Beim Routing in andere Netze und bei der Verwendung eines Kapselungsprotokolls wie PPPoE (PPP over Ethernet) oder ATM für DSL ist der Wert aber nicht optimal. Das Kommandozeilen-Tool tracepath hilft unter Linux bei der Ermittlung einer geeigneten MTU.

Viele DSL-Provider verwenden auf ihrem Internet-Gateway, über das Sie als Kunde ins Internet kommen, nur eine MTU von 1492 oder 1476 Byte. Denn die PPPoE-Header belegen ebenfalls einige Byte Nutzlast. Beim Senden von Netzwerkpaketen mit 1500 Byte MTU ins Internet über die DSL-Verbindung passiert nun Folgendes: Die zu großen Datenpakete müssen zerstückelt und auf den kleineren MTU-Wert gebracht werden, was zwangsläufig zu einer Fragmentierung führt.

Dies ist heute dank leistungsfähiger Router zwar kein großes Problem mehr. Die Router-Firmware, in der meist ein Embedded Linux läuft, berechnen die Pakete auf der TCP-Transportschicht vor der Weitergabe an das Provider-Gateway neu. Das Verfahren nennt sich „MSS Clamping“ und geht im Router innerhalb weniger Millisekunden vor sich, kostet allerdings Rechenleistung. Gerade wenn im LAN viel los ist, können schmalbrüstige Router dabei schon merklich langsamer und recht heiß werden. Die Alternative ist, die Netzwerkschnittstelle mit einer niedrigen MTU zu konfigurieren, damit sich der Router eine Fragmentierung sparen kann.

Zunächst gilt es herauszufinden, ob das Provider-Gateway mit einer geringeren MTU arbeitet und ob es deshalb zu einer Paketfragmentierung kommt. Unter Linux dient dazu der Befehl „tracepath“ in der Kommandozeile, den Sie mit einem Ziel-Host als Parameter aufrufen:

tracepath www.tecchannel.de

Das Tool ist den verbreiteten Distributionen vorinstalliert, nur unter Debian 7/8 muss es meist noch über das Paket „iputils-tracepath“ nachinstalliert werden. Und noch eine Ausnahme: In Open Suse müssen Sie das Tool mit dem vollen Pfad „/usr/bin/tracepath“ aufrufen.

MTU-Größe anpassen: Im Network Manager, der bei den verbreiteten Distributionen die Netzwerkkonfiguration übernimmt, können Sie die MTU manuell anpassen.

In der Ablaufverfolgung von tracepath sehen Sie nun jede Zwischenstation (Hop), die das Netzwerkpaket von Ihrem PC zum Server www.tecchannel.de durchläuft. In der rechten Spalte finden Sie aber nicht nur die jeweiligen Antwortzeiten, sondern auch die Angabe „pmtu“ mit einem Wert in Byte, die der MTU entspricht. Ändert sich deren Größe beim Übergang vom Router zum Provider-Gateway, so ist hinter der IP-Adresse des Gateways nochmals „pmtu“ mit einem kleineren Wert angegeben, beispielsweise pmtu 1492“. Das bedeutet, die Pakete müssen vom Router fragmentiert werden. Um dies zu vermeiden, reduzieren Sie die MTU der Netzwerkschnittstelle auf den kleinen Wert, hier 1492 Byte. Dies können Sie im Network Manager erledigen, der sich bei den meisten Linux-Distributionen um die Netzwerkverbindungen kümmert. Gehen Sie dort in die Netzwerkeinstellungen und in der aktiven Verbindung auf „Optionen“ beziehungsweise auf „Bearbeiten“ und dann auf „Ethernet“. Im unteren Feld „MTU“ tragen Sie den gewünschten Wert ein, beispielsweise „1492“ und klicken Sie auf „Speicher“. Die neue MTU ist nach einer Trennung und erneuten Herstellung der Netzwerk/WLAN-Verbindung aktiv.

Dateiverwaltung: Riesige Dateien im Texteditor

Wer mit Datenbanken zu tun hat, kommt hin und wieder schon mal in die Verlegenheit, sehr große Dateien vom Umfang mehrerer Hundert Megabyte oder gar Gigabyte mit einem Texteditor bearbeiten zu müssen. Auch im Internet tauchen immer wieder riesige Passwortlisten dieser Größenordnung mit Millionen mutmaßlich gehackter Accounts auf.

Joe’s Editor: Der wenig bekannte Texteditor kommt wie Vi/Vim sehr gut mit großen Dateien zurecht und ist für Einsteiger zugänglicher als der mächtige Editor Vi/Vim.

Übliche Editoren wie Gedit und Kate für den Desktop können solche Dateien nicht problemlos öffnen, da die Programme sehr langsam werden oder bei zu wenig Arbeitsspeicher sogar abstürzen. Editoren in der Kommandozeile sind immer noch der beste Weg, riesige Textdateien zum Durchsuchen und zum Bearbeiten zu laden. Drei Programme schlagen sich wacker, auch wenn die Dateigröße jenseits von einem GB liegt:

Joe: Joe’s Editor ist auf den verbreiteten Distributionen nicht vorinstalliert, aber in den Paketquellen von Debian, Ubuntu, Fedora, Open Suse vorhanden und lässt sich über das gleichnamige Paket „joe“ leicht nachinstallieren. Dieser Editor ist für große Dateien optimiert, die stückweise in den Arbeitsspeicher geladen werden.

Vi/Vim: Steht genügend freier Speicher plus Swap zur Verfügung, um die geöffnete Datei komplett in den Arbeitsspeicher zu laden, dann arbeitet Vi/Vim ohne Murren. Beim Einlesen der Textdatei erstellt Vi/Vim jedoch eine Sicherheitskopie, und eventuell aktivierte Plug-ins wie die Syntax-Hervorhebung sorgen für eine lange Ladezeit. Sie können diesen Vorgang mit der Tastenkombination Strg-C abbrechen und die Datei im Nur-Lesen-Modus laden.

Mcview: Der Betrachter des Dateimanagers Midnight Commander ist ideal, wenn Sie eine Datei nur lesen und durchsuchen, aber nicht bearbeiten müssen. Die Bedienung ist einfach, aber der Funktionsumfang ist deutlich geringer als bei Joe und Vi/Vim.

Dateiverwaltung: Logdateien ausleeren und trimmen

Eine recht unangenehme Eigenschaft von Logdateien ist, dass diese meist zu umfangreich geworden sind, wenn man einen Blick hinein werfen will. Zudem stehen die neuesten und damit interessanten Informationen ganz am Ende der Datei.

Ganz am Ende: Mit tails sehen Sie sich nur die letzten zehn Zeilen einer Datei an. Praktisch ist das Kommando auch, um nur die aktuellsten Zeilen von Logdateien zu behalten.

Mit dem Befehl „tail“ gibt es die Möglichkeit, nur eine bestimmte Anzahl von Zeilen vom Ende einer Datei anzuzeigen. So sehen mit dem Kommando

sudo tail /var/log/apache2/error.log

nur die letzten zehn Zeilen der Log-Datei „/var/log/apache2/error.log“.

Die Anzahl der Zeilen können Sie mit dem Parameter „-n“ auch verringern oder erhöhen. Nützlich ist tail auch, um Logdateien zu trimmen: Mit dem Kommando

sudo tail -n 20 /var/log/apache2/error.log | sudo tee /var/log/apache2/error.log

behalten Sie die neuesten zwanzig Zeilen der Logdatei „/var/log/apache2/error.log“ und verwerfen alles, was älter ist. sudo ist nur dann notwendig, wenn das Lesen und Schreiben der Logdatei root-Rechte erfordert.

(PC-Welt/ad)