2323663

Geschickte Shell: Tipps für das Terminal

30.01.2018 | 14:14 Uhr |

Das Tool Maybe erlaubt das Ausprobieren von Befehlen nach dem Was-wäre-wenn-Prinzip. Eine nützliche Analyse mit Visualisierung der Startzeiten eines Linux-Systems ist in der Funktionsfülle des Init-Systems Systemd versteckt.

Netzwerk und IP-Nummer: Kurz und bündig

Das Tool ifconfig ist schon eine ganze Weile auf dem Abstellgleis und wird seit 2009 nicht mehr gepflegt. So ist es wenig überraschend, dass es in den neuen Ausgaben wichtiger Distributionen nicht mehr enthalten ist. So verzichten Debian 9 und Ubuntu 17.10 auf das Kommandozeilentool, an dessen Stelle der Befehl ip getreten ist.

Die Syntax des Befehls ip unterscheidet sich vom einfach gestrickten Tool ifconfig und kann mehr Informationen zur Netzwerkkonfiguration anzeigen, verlangt dazu aber die richtigen Parameter. Um die IP-Adressen aller Netzwerkschnittstellen in der Kommandozeile anzuzeigen, dient dieser Aufruf:

ip a

Dies listet alle Netzwerkschnittstellen auf und zeigt jeweils hinter „inet“ die lokale IPv4-Adresse und nach „inet6“ die IPv6-Adressen. Die erste Angabe zeigt die global gültige IPv6-Adresse des Systems und die zweite die IPv6-Adresse im lokalen Netzwerk. Das gibt es auch kürzer: Der Befehl

ip -4 a

gibt nur IPv4-Adressen an und

ip -6 a

beschränkt sich allein auf die IPv6-Nummern. Trotzdem bleibt der Befehl vergleichsweise gesprächig. Eine kurze, bündige Alternative liefert das Kommando

hostname -I

ohne weitere Infos zur Netzwerkkonfiguration, wobei nur die IP-Nummern (IPv4 und IPv6) des Systems in einer Zeile aufgelistet werden.

Hinweis: Wer ohne ifconfig nicht arbeiten will, kann in den verbreiteten Linux-Distributionen das Paket „net-tools“ über den jeweiligen Paketmanager nachinstallieren und dann noch eine Weile das altgewohnte Tool verwenden.

Da es mit modernen Linux-Kerneln nicht mehr komplett kompatibel ist, muss man aber damit rechnen, dass dieses Paket bald gänzlich verschwinden wird.

Lesetipp Linux-Top-20: So finden Sie Ihr Lieblings-Linux

Systemanalyse mit Systemd: Bootzeit ermitteln

Der mittlerweile in allen gängigen Linux-Distributionen vorhandene Init-Dienst Systemd ist deutlich komplexer als das ältere System-V-Inits-System und wird dafür weiterhin kritisiert. Dafür bietet Systemd aber eine Reihe nützlicher Tools, um den Bootvorgang zu analysieren.

Visualisierter Bootvorgang mit Systemd.
Vergrößern Visualisierter Bootvorgang mit Systemd.

Systemd gibt recht komfortabel Auskunft darüber, wie lange der Bootvorgang vom Einschalten des Linux-Systems bis zur Anmeldung dauert. Nach dem Befehl

systemd-analyze

zeigt der Init-Dienst die Startzeit in Sekunden am Ende der ausgegebenen Zeile an und schlüsselt diese in ihre Bestandteile auf: Die Angabe vor „kernel“ (in Klammern) gibt die Ladezeit der systemnahen Komponenten an und „userspace“ die der Benutzerumgebung.

Ist das Linux-System unter Uefi installiert, zeigt das Analysetool auch an, wie viele Sekunden das Laden der Firmware, des Bootloaders und der initialen Ramdisk (initrd) dauerte. Noch genauer listet das Kommando

systemd-analyze blame

den Startvorgang auf. Es erstellt eine Liste der gestarteten Systemd-Dienste nach ihrer Startzeit absteigend sortiert. Nützlich ist diese Funktion, um Verzögerungen beim Start eines Desktopsystems auf den Grund zu gehen. Der häufige Check von Datenträgern durch den Dienst „systemd-fsck“ oder fehlgeschlagene mount-Aktionen für Laufwerke in der Konfigurationsdatei „/etc/fstab“ sind typische Bremsklötze.

Eine visuelle Darstellung des Bootvorgangs liefert dieses Kommando:

systemd-analyze plot > boot.svg

Hier entsteht ein Diagramm im SVG-Format, welches beispielsweise die Programme Libre Office Draw, Inkscape und Gimp öffnen können. Die X-Achse des Diagramms zeigt die Bootzeit in Sekunden an, die Y-Achse zeichnet chronologisch alle per Systemd gestarteten Dienste und Aktionen mit ihrer jeweiligen Dauer auf.

Die meisten davon werden parallel aktiviert und bremsen sich nicht gegenseitig aus. Die eigentliche Startzeit eines Dienstes ist hier mit kräftigen Rot hinterlegt.

Dateiverwaltung: Hilfestellung für oktale Zugriffsrechte

Die Grundlagen der Zugriffsrechte in einem Unix-Dateisystem sind alles andere als kompliziert. Schreibrecht, Leserecht und Rechte zum Ausführen lassen sich für einzelne Benutzer, ganze Gruppen und alle anderen festlegen. Für Einsteiger stellt die unter Linux übliche oktale Notation dieser Zugriffsrechte aber immer wieder eine Hürde dar.

Rechte berechnen: Chmod-Calculator stellt im Browser ein komfortables Menü bereit.
Vergrößern Rechte berechnen: Chmod-Calculator stellt im Browser ein komfortables Menü bereit.

Der Befehl chmod („change mode“) dient in der Shell schon seit grauen Unix-Vorzeiten zum Setzen und Entziehen von Zugriffsrechten im Dateisystem. Während Desktopanwender unter Linux damit nur äußerst selten Berechtigungen ändern müssen, kommt der Befehl bei der Administration eines Linux-Servers häufiger zum Einsatz. Wem als Gelegenheitsadministrator die oft benötigen oktalen Zugriffsrechte für chmod nicht geläufig sind, findet Hilfe im Web: Die englischsprachige Seite https://chmodcommand.com erlaubt die Zusammenstellung der gewünschten Berechtigungen mit einigen Klicks und präsentiert als Ergebnis den dafür benötigten chmod-Befehl. Wichtig ist dabei, nicht mit den voreingestellten Standards zu arbeiten, die zunächst auf die Rechte „777“ (Vollzugriff für alle) und Rekursion eingestellt sind.

Debugging mit Maybe: Sandkasten für Scripts und Befehle

Aus dem Quellcode eines Scripts oder aus den Befehlen eines langen Kommandos ist nicht immer gleich ersichtlich, welche Auswirkungen auf das Dateisystem zu erwarten sind. Das in Python geschriebene Tool Maybe gibt Aufschluss darüber, welche Aktionen ein Befehl oder Script im Dateisystem ausführt.

Ohne tatsächlich Dateien zu ändern oder zu löschen, listet Maybe lediglich auf, was ein nachfolgendes Kommando oder Script tun würde. Das Kunststück gelingt mit dem Systemaufruf Ptrace, der die Dateioperationen entgegennimmt und auswertet, aber nicht ausführt.

Das Tool Maybe zeigt, was die analysierten Scripts oder Befehle im Dateisystem anstellen würden.
Vergrößern Das Tool Maybe zeigt, was die analysierten Scripts oder Befehle im Dateisystem anstellen würden.

Zur Installation von „Maybe“ dient nicht der Quellcode auf der Projektseite des Entwicklers unter https://github.com/p-e-w/maybe . Eine viel einfachere Installation erfolgt über ein Python-Paket, das mit dem Python-Installer Pip schnell eingerichtet ist. In Debian, Raspbian, Ubuntu, Mint sind zur Einrichtung im Terminal nur die Befehle

sudo apt install pythonpip

und

sudo pip install maybe

nötig. Danach ist das Tool einsatzbereit und wird einem Aufruf einfach vorangestellt:

maybe [Script/Befehl]

Anschließend listet Maybe alle geplanten Änderungen am Dateisystem auf und fragt nach, ob man in einem zweiten Durchgang diese Aktionen erlauben möchte („permit these operations?“).

Hinweis: Der Entwickler weist darauf hin, dass Maybe kein Sicherheitstool ist und es durchaus Wege und Mittel gibt, aus dem Sandkasten von Ptrace auszubrechen. Zur Fehlersuche und für Tests weitgehend vertrauenswürdiger Scripts und Befehle ist das Tool aber gut geeignet.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2323663