Fragen zu Hard- und Software beantworten

Aus EasyLinux 07/2017

Fragen zu Hard- und Software beantworten

© alphaspirit, 123rf

Auskunft

Linux ist sehr auskunftfreudig: Wie viel Plattenplatz und Arbeitsspeicher ist noch frei? Welche Linux-Distribution läuft hier in welcher Version? Wer ist eingeloggt? Dies und viel mehr bringen Sie mit kurzen Shell-Kommandos in Erfahrung.

Um Informationen über das laufende System zu erhalten, müssen Sie kein grafisches Werkzeug wie etwa das KDE-Infozentrum (kinfocenter) bemühen – alle interessanten Daten stehen in der Shell bereit; wer die richtigen Programm- und Dateinamen kennt, wird schnell fündig.

Fragen zur Orientierung

“Wach, orientiert zu Person und Ort” beschreibt einen Patienten im Krankenhaus, der ansprechbar ist und die Fragen “Wer sind Sie?” und “Wo sind Sie?” korrekt beantworten kann. Zu wissen, wer und wo man ist, hat viele Vorteile, und das gilt im übertragenen Sinne auch für die Arbeit am Computer. Dort verändern sich die Fragestellungen geringfügig und lauten nun:

  • Mit welchem Benutzernamen bin ich angemeldet?
  • Auf welcher Maschine arbeite ich?

Das klingt zunächst überflüssig, aber Linux-Administratoren sind es ja gewohnt, sich via SSH auf zahlreichen Maschinen einzuloggen und auch dort Befehle auszuführen (Abbildung 1). Um nun nicht versehentlich auf der falschen Maschine ein Verzeichnis zu löschen, sollte man immer die Orientierung behalten.

Abbildung 1: Man kann nie genug Terminalfenster öffnen – auf einem großen Monitor mit hoher Auflösung behalten Sie dank SSH mehrere Rechner im Blick.

Abbildung 1: Man kann nie genug Terminalfenster öffnen – auf einem großen Monitor mit hoher Auflösung behalten Sie dank SSH mehrere Rechner im Blick.

Die Shell unterstützt das automatisch über den Shell-Prompt, der – wenn Sie nicht absichtlich etwas anderes einstellen – immer (durch ein “@”-Zeichen getrennt) den Benutzernamen und den Namen des Rechners anzeigt, also z. B.

esser@hpquadi7:/tmp> _

Die dritte Information in diesem Prompt ist hinter dem Doppelpunkt das aktuelle Arbeitsverzeichnis (hier: /tmp/). Am Ende steht ein Größerzeichen (typisch für OpenSuse), alternativ findet sich oft ein Dollarzeichen (die Voreinstellung bei Kubuntu). “>” oder “$” sagen: Der Anwender ist mit normalen Rechten unterwegs. Ändert sich das Zeichen in eine Raute (“#”), sind Sie zum Administrator geworden: Sie sehen den “Root-Prompt”. Auch hier gibt es einen Unterschied zwischen den OpenSuse- und Kubuntu-Voreinstellungen: Kubuntu zeigt auch beim Root-Prompt den Benutzernamen (dann root) an, während OpenSuse darauf verzichtet, weil durch die Raute schon klar ist, wer angemeldet ist (Abbildung 2).

Abbildung 2: Root-Rechte sind immer an der Raute "#" im Prompt erkennbar. Kubuntu (oben) zeigt zusätzlich den Benutzernamen "root" an.

Abbildung 2: Root-Rechte sind immer an der Raute “#” im Prompt erkennbar. Kubuntu (oben) zeigt zusätzlich den Benutzernamen “root” an.

Sollten Sie sich einmal die Anzeige zerschießen (indem Sie experimentell die Shell-Variable PS1 verändern), können Sie mit den Kommandos whoami, hostname und pwd herausfinden, wer und wo Sie sind:

esser@hpquadi7:~/Daten/EL/2017/04/guru> PS1="kaputterprompt> "
kaputterprompt> whoami
esser
kaputterprompt> hostname
hpquadi7
kaputterprompt> pwd
/home/esser/Daten/EL/2017/07/guru

Bequemer ist es aber, den Prompt wiederherzustellen, z. B. mit dem Befehl

PS1="\u@\h:\w> "

Hier stehen \u, \h und \w für user (Benutzer), hostname und working directory (Arbeitsverzeichnis).

Ist hier noch was frei?

Zu wenig Platz zu haben, ist immer ungünstig – das gilt bei Linux sowohl für den Hauptspeicher als auch für die Festplatte. Wie es im RAM aussieht, verrät der Befehl free (Listing 1). Die Ausgabe enthält mehr und weniger relevante Informationen: In der ersten Spakte total steht, wie viel RAM im Rechner verbaut ist (Mem, hier 12 GByte) und wie viel zusätzlicher Platz als Swap (Auslagerungsbereich, hier 2 GByte) zur Verfügung steht.

Listing 1

Ausgabe von “free”

esser@hpquadi7:~> free
             total       used       free     shared    buffers     cached
Mem:      12279776    8492100    3787676      68532      74204    2931280
-/+ buffers/cache:    5486616    6793160
Swap:      2104316          0    2104316

Die Angaben in den Spalten used und free erklären im Beispiel, dass ca. 8 GByte belegt und entsprechend knapp 4 GByte RAM frei sind. Einen Teil der Belegung verursacht Linux aber, indem es aus Performance-Gründen Daten im Hauptspeicher vorrätig hält, die es zu einem früheren Zeitpunkt von der Platte gelesen hat (und aktuell gar nicht braucht). Das sind die Speicherbereiche, deren Größen in den Spalten buffers und cached angegeben sind: Die Inhalte können jederzeit “weggeworfen” werden (was diese Speicherbereiche verfügbar macht), weil die Inhalte ja auch auf der Platte liegen. Darum kann man diese Bereiche zum freien Speicher hinzuzählen. Genau das passiert in der zweiten Zeile (-/+ buffers/cache): Dort ist der Eintrag für den belegten Speicher kleiner (und der für den freien entsprechend größer). Die Werte in dieser Zeile sind die richtigen, wenn Sie herausfinden möchten, ob der Hauptspeicher allmählich knapp wird.

Dass in der letzten Zeile Swap bei used eine Null steht, zeigt, dass der Beispielrechner noch keine Daten auf Platte auslagern musste. Sollte sich das ändern, weil Sie speicherintensive Software laufen lassen, wird vielleicht sogar der Auslagerungsspeicher knapp. Welche Swap-Bereiche aktiviert sind, verrät ein Blick in /proc/swaps:

esser@hpquadi7:~> cat /proc/swaps
Filename    Type       Size     Used  Priority
/dev/sdb4   partition  2104316  0     -1

Linux verwendet zum Auslagern bevorzugt Swap-Partitionen, kann aber alternativ oder ergänzend auch mit Swap-Dateien arbeiten (so, wie Windows das tut). Die folgenden Befehle legen auf die Schnelle eine zusätzliche 2 GByte große Swap-Datei im Ordner /tmp/ an (dd erstellt die Datei, mkswap schreibt eine Swap-Signatur an ihren Anfang) und binden sie als zusätzlichen Swap-Bereich ein. Danach zeigt ein erneuter Blick in /proc/swaps, wie sich die Situation geändert hat:

esser@hpquadi7:~> sudo su -l
hpquadi7:~ # dd if=/dev/zero of=/tmp/swap bs=1M count=2048; chmod 0600 /tmp/swap; mkswap /tmp/swap; swapon /tmp/swap
2048+0 Datensätze ein
2048+0 Datensätze aus
2147483648 Bytes (2,1 GB) kopiert, 6,76692 s, 317 MB/s
Auslagerungsbereich Version 1 wird angelegt, Größe = 2097148 KiB
keine Bezeichnung, UUID=31f53b44-ac76-44c9-a64d-a23774d55476
hpquadi7:~ # cat /proc/swaps
Filename    Type       Size     Used  Priority
/dev/sdb4   partition  2104316  0     -1
/tmp/swap   file       2097148  0     -2

Plattenplatz

Um den Speicherplatzverbrauch eines Verzeichnisses, einer ganzen Partition oder Ihres gesamten Linux-Systems einschließlich aller gemounteten Dateisysteme zu berechnen, können Sie den du-Befehl (disk usage, Plattennutzung) verwenden. Standardmäßig schaut sich das Kommando alle Ordner, Unterordner usw. an und gibt für jedes gefundene Verzeichnis die Größe an. Diese detaillierte Anzeige können Sie mit der Option -s (summary, Zusammenfassung) unterdrücken und bei der Gelegenheit die Einheit von Byte auf MByte (-m) oder mit -h (human-readable, für Menschen lesbar) auf ein der jeweiligen Größe angemessenes Vielfaches (also Byte, KByte, MByte, GByte oder TByte) umstellen:

esser@hpquadi7:~> du -s
433840040       .
esser@hpquadi7:~> du -s Daten/ Dokumente/ Vorlagen/
9270792 Daten/
7892460 Dokumente/
4       Vorlagen/
esser@hpquadi7:~> du -sm Daten/ Dokumente/ Vorlagen/
9054    Daten/
7708    Dokumente/
1       Vorlagen/
esser@hpquadi7:~> du -sh Daten/ Dokumente/ Vorlagen/
8,9G    Daten/
7,6G    Dokumente/
4,0K    Vorlagen/

Wie Sie an den Beispielen sehen, lassen sich auch explizit Verzeichnisse übergeben, für die du den Speicherverbrauch untersuchen soll. Zahlen ohne Einheiten (beim Aufruf ohne -m oder -h) sind Größenangaben in KByte.

Globale Informationen über den Speicherverbrauch liefert der Befehl df (disk free, freier Laufwerkspeicherplatz): Er zeigt für alle gemounteten Dateisysteme den gesamten, den verwendeten und den noch freien Speicherplatz an. Diese Ausgabe war bis zur Einführung des Btrfs-Dateisystems immer sehr übersichtlich – auf aktuellen Linux-Installationen, die Btrfs verwenden, gilt das leider nicht mehr. Abbildung 3 zeigt die Ausgabe von df -h auf einem solchen Rechner, die Option -h steht wieder für “human-readable” und sorgt für lesbare Angaben in GByte oder TByte. In der Abbildung taucht die Partition /dev/sdb5 stolze 16 Mal auf: So oft ist sie an verschiedenen Mount-Points eingehängt. Diese praktische Eigenschaften von Btrfs, mit Sub-Volumes arbeiten zu können [1], zerstört aber leider die Lesbarkeit von df-Meldungen.

Abbildung 3: Eigentlich produziert "df" gut lesbare Übersichten; beim Einsatz des Dateisystems Btrfs gilt das aber nicht mehr.

Abbildung 3: Eigentlich produziert “df” gut lesbare Übersichten; beim Einsatz des Dateisystems Btrfs gilt das aber nicht mehr.

Sie können mit df auch gezielt Informationen für eine einzelne Partition anfordern – das funktioniert auf drei Arten:

  • Angabe der Gerätedatei, z. B. /dev/sdb5,
  • Angabe des Mount-Points, z. B. /home, oder
  • Angabe eines beliebigen Ordners, zu dem df dann zunächst herausfindet, auf welcher Partition er liegt.

Deswegen liefern die folgenden drei Kommandos dieselben Ergebnisse:

esser@hpquadi7:~> df -h /dev/sdb5; df -h /home; df -h /home/esser/Dokumente
Dateisystem  Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sdb5      41G     25G   15G   64% /
Dateisystem  Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sdb6     570G    553G   16G   98% /home
Dateisystem  Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sdb6     570G    553G   16G   98% /home

Ein Nebeneffekt der dritten Variante ist, dass Sie damit schnell feststellen können, auf welcher Partition sich eine bestimmte Datei oder ein Verzeichnis befindet, denn die Partition taucht ja in der Ausgabe von df auf.

Prozessortyp

Welche CPU ist eigentlich im Rechner verbaut? Das beantwortet ein Blick in die Datei /proc/cpuinfo. Die Ausgabe zeigt für jeden Prozessor-Core (und bei Hyperthreading auch für jeden “logischen” Core) einen Block mit eigener Prozessornummer an; eine Quad-Core-CPU mit Hyperthreading erhält also acht Blöcke.

Ein Block (der immer mit processor : Nummer anfängt) enthält zahlreiche Informationen über die CPU, darunter die Bezeichnung im Feld model name. Für einen schnellen Überblick können Sie die Datei mit egrep durchsuchen; Abbildung 4 zeigt die Zeilen, die processor oder model name enthalten; der erste Aufruf stammt von einer virtuellen Maschine (VM), der zweite von einem Rechner mit Quad-Core-i7-Prozessor.

Abbildung 4: Über "/proc/cpuinfo" erfahren Sie, welche CPU im Rechner steckt.

Abbildung 4: Über “/proc/cpuinfo” erfahren Sie, welche CPU im Rechner steckt.

In seltenen Fällen brauchen Sie die Auflistung der unterstützten CPU-Features, die sich im Feld flags versteckt – sie verrät z. B., welche Virtualisierungsfunktionen die CPU beherrscht. Wenn bei den Flags das Wort hypervisor auftaucht, läuft das Linux in einer virtuellen Maschine. Diese Information lässt sich aber bequemer über hostnamectl abfragen: Auf einem Rechner, der Linux nativ (direkt auf der Hardware) ausführt, meldet das Tool unter Chassis z. B. laptop oder desktop; bei einer VM erscheint stattdessen vm. Außerdem enthält die Ausgabe auf VMs eine Zusatzzeile Virtualization, die angibt, welche Technik zum Virtualisieren eingesetzt wird (z. B. xen, kvm, oracle). Listing 2 zeigt die vollständigen Ausgaben des Tools auf einem PC (oben) und in einer VM (unten).

Listing 2

Ausgaben von “hostnamectl”

esser@hpquadi7:~> hostnamectl status
   Static hostname: hpquadi7.localnet
Transient hostname: hpquadi7
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: 4ed603cd18304c8d9216b69334cdeb3a
           Boot ID: 507018e0c782408da435f5dd05c312b1
  Operating System: openSUSE 13.2 (Harlequin) (x86_64)
       CPE OS Name: cpe:/o:opensuse:opensuse:13.2
            Kernel: Linux 3.16.7-29-desktop
      Architecture: x86-64
esser@kubu1610:~$ hostnamectl status
   Static hostname: esser-VirtualBox
Transient hostname: kubu1610
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 8805c839cbad422e929feb2f7a8de2e7
           Boot ID: 045f6cdd20fb477fa8e49abdbb24d0b7
    Virtualization: oracle
  Operating System: Ubuntu 16.10
            Kernel: Linux 4.8.0-32-generic
      Architecture: x86-64

Betriebssystem und Distribution

Ein klassisches Unix-Kommando, das nicht nur unter Linux, sondern auf jedem Unix-ähnlichen System (also z. B. unter macOS, FreeBSD und Minix – und wenn Sie auf einem Windows-Rechner die Cygwin-Tools [2,3] installieren, dann auch dort) funktioniert, ist uname (Unix name). Ohne Parameter aufgerufen, verrät es nur den Namen des Betriebssystems (z. B. Linux). Über die Option -a wird es gesprächiger und verrät – wie in Abbildung 5 zu sehen – weitere Details, darunter

  • die Kernel-Version (im Beispiel: 4.4.36-8-default),
  • das Datum, an dem der Kernel übersetzt wurde (09.12.2016) und
  • die Prozessor-Architektur des Kernels (x86_64 steht für ein 64-Bit-Linux).

Im Screenshot sehen Sie im unteren Bereich zusätzlich die Ausgabe auf einem Apple MacBook, das macOS mit dem Kernel Darwin 16.4.0 ausführt.

Linux-Rechner können über lsb_release zudem ausgeben, welche Linux-Distribution (im Beispiel: OpenSuse) in welcher Version verwendet wird.

Abbildung 5: "uname" ist ein Klassiker der Unix-Welt und informiert darüber, welches Unix läuft. Unter Linux liefert "lsb_release" Hinweise zur Distribution.

Abbildung 5: “uname” ist ein Klassiker der Unix-Welt und informiert darüber, welches Unix läuft. Unter Linux liefert “lsb_release” Hinweise zur Distribution.

Auslastung

Zum Schluss erwähnen wir noch drei Methoden, sich über die aktuelle Systemlast informieren zu lassen – die einfachste Variante führt über das Tool uptime, das in erster Linie (und seinem Namen entsprechend) darüber informiert, wie lange der Rechner schon läuft. Auch dieser Befehl ist ein Unix-Klassiker. Hinter der Zeitangabe folgen aber noch das Wort “Durchschnittslast” (oder bei Kubuntu die englische Fassung “load averages”) und drei Zahlen:

esser@hpquadi7:~> uptime
 08:21   1 Tag  2:11 an, 7 Benutzer,  Durchschnittslast: 0,15, 0,14, 0,14

Die drei Zahlen stehen für die gemittelte Systemlast in der letzten Minute sowie während der letzten fünf und 15 Minuten. Die Werte geben an, wie viele Prozesse im Schnitt rechenbereit sind, aber nicht laufen können (weil ein anderer Prozess läuft). Je höher der Wert, desto stärker ist die Belastung.

Um bei hoher Systemlast nach verantwortlichen Prozessen zu fahnden, eignet sich das Tool top: Es nutzt das ganze Terminalfenster, um eine sekündlich aktualisierte Liste der aktivsten Prozesse anzuzeigen. Hübscher als bei top finden Sie diese Informationen im Programm htop (Abbildung 6), das Sie allerdings zunächst mit sudo zypper in htop (OpenSuse) bzw. sudo apt install htop (Kubuntu) nachinstallieren müssen; top gehört zur Standardausstattung aller Distributionen. In beiden Programmen finden Sie im oberen Bereich auch die von uptime bekannten Lastwerte.

Abbildung 6: "htop" ist eine schönere Version des Prozessmonitors "top", in der man auch scrollen kann.

Abbildung 6: “htop” ist eine schönere Version des Prozessmonitors “top”, in der man auch scrollen kann.

Grafische Tools

Viele der hier erwähnten Informationen können Sie auch über grafische Tools abrufen, für KDE-Anwender ist das KDE-Infozentrum kinfocenter dafür die erste Anlaufstelle (Abbildung 7). Die CPU-Liste ist dort z. B. über Geräteinformationen / Gerätebetrachter / Prozessoren erreichbar, und eine Liste der Partitionen gibt es gleich neben den Prozessoren unter Speichergeräte / Festplatte.

Abbildung 7: Das KDE-Infozentrum bündelt viele Hardware-Informationen unter einer Oberfläche.

Abbildung 7: Das KDE-Infozentrum bündelt viele Hardware-Informationen unter einer Oberfläche.

Je nach Distribution und installiertem Desktop steht aber das KDE-Infozentrum nicht zur Verfügung, und alternative Tools präsentieren eine andere Auswahl von Systemdaten. Wer mehrere Linux-Systeme administriert, hat zudem nicht immer die Möglichkeit, auf entfernten Rechnern grafische Tools zu starten – darum ist es in jedem Fall hilfreich, sich die wichtigsten Kommandozeilentools und Dateien rund um das Thema “Information” zu merken.

Glossar

Hyperthreading

Prozessoren mit Hyperthreading-Unterstützung präsentieren die doppelte Anzahl der tatsächlich vorhandenen Prozessorkerne. Dadurch kann die Performance von parallel laufenden Anwendungen teilweise erhöht werden – allerdings nicht im selben Maß, in dem dies bei einer Verdopplung der Anzahl der Kerne möglich wäre. Technisch werden auf der CPU Teile des Kerns (und nicht der ganze Kern) doppelt verbaut.

Infos

  1. Btrfs-Artikel: Hans-Georg Eßer, “Butter bei dat Dateisystem”, EasyLinux 01/2015, S. 94 f., http://linux-community.de/34125

  2. Cygwin: http://www.cygwin.com/

  3. Cygwin-Artikel: Hans-Georg Eßer, “Linux-Tools für Windows”, EasyLinux 02/2013, S. 48 ff., http://linux-community.de/28511

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
EasyLinux 07/2017 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben