Linux-Terminal-Basics 9: Speicherplatz & Co. anzeigen
Wie viel Speicher ist frei? Wie groß ist Ordner XY? Welche Festplatten habe ich überhaupt? Fragen über Fragen ...
Fragen nach Speicherplatz sind vielleicht nichts Alltägliches, wollen aber auch beantwortet werden. Das Blöde: Da man die Befehle im Terminal tendenziell eher selten nutzt und sie nicht gerade schön sind, fallen sie oft aus dem Kopf. Das Schöne: Hier geht etwas, das auf dem Desktop selbstverständlich sein sollte, aber nicht ist - Ordnergrößen anzeigen.
In unserer Serie zu Linux-Terminal-Basics zeigen wir Euch, wie Ihr einige der wichtigsten Aufgaben auf der Kommandozeile erledigen könnt - vom Navigieren, über Dateioperationen, bis hin zu komplexen Suchaufträgen. Als Terminal verwenden wir Bash und auch wenn Linux im Vordergrund steht, funktioniert fast alles auch unter Windows. Und nun noch die Links zur Einleitung und zur Übersicht aller Artikel.
du - disk usage
du ist das Standardwerkzeug, um anzuzeigen, wie viel Speicherplatz Dateien und Verzeichnisse belegen. Ruft Ihr einfach nur du ohne Optionen auf, bekommt Ihr eine Liste aller Dateien im aktuellen Ordner und in dessen Unterordnern. Und das auch noch mit der Größenangabe in Bytes - unschön.
Darum gleich zu Anfang mal das, was du besser macht als zum Beispiel der Windows Explorer:
du -h -c -d 1 ./
Damit listet du die Verzeichnisse im aktuellen Verzeichnis samt Größe in Kilo-/Mega-/Giga-/Terabyte plus eine abschließende Gesamtsumme:
- h: Human readable, also vernünftige Größenangaben
- c: Gesamtsumme
- d: Depth/Tiefe; gibt an, wie viele Hierarchiestufen gesucht wird
Die Ausgabe könnte dann zum Beispiel so aussehen:
$ du -hc -d 1 ./
34G ./Age of Empires IV
11G ./Battletoads
148M ./OVERWHELM
4.4G ./Return to Monkey Island
747M ./Teenage Mutant Ninja Turtles- Shredder's Revenge
49G ./
49G total
Eine solche Übersicht würde man sich doch auch im Explorer und anderen Datei-Browsern wünschen, oder? Nun, fairerweise muss man sagen, dass es bisweilen verdammt lange dauert, bis das Resultat steht. Selbst bei den wenigen Ordnern im Beispiel sind es gut 11 Sekunden auf einem älteren Core i7.
Vielleicht wollt Ihr aber auch nur wissen, wie groß ein bestimmter Ordner ist:
du -hcs ./
Neu ist hier die Option s für Summarize, die eben nur die Endgröße liefert.
df - disk free
df ist das natürliche Gegenstück zu du, denn es zeigt nicht die Belegung an, sondern den freien Platz. Ohne weitere Optionen liefert df eine Liste aller Laufwerke samt Größe, freiem und belegtem Platz, prozentualer Auslastung und Mount-Punkt - und abermals mit blöden Byte-Größen. Daher ist der Standardaufruf eher:
df -h
Auch hier steht das h wieder für "human readable" und sorgt für die Ausgabe in Megabyte und so weiter.
Es ist aber immer noch viel Information. Ihr könnt aber auch gezielt angeben, welche Daten Ihr haben wollt. Und es lassen sich auch bestimmte Typen von Dateisystemen ausschließen. Das ist vor allem unter vielen Linuxen interessant, weil sich dort manchmal eine ganze Reihe von temporären tmpfs-Dateisystemen tummeln, die Euch wahrscheinlich gar nicht interessieren. Und so könnte das aussehen:
df -h --output=source,size,used,avail,target --exclude-type=tmpfs
Über output wird schlicht angegeben, welche Spalten Ihr sehen wollt - welche es gibt, zeigt wie gewohnt ein dh --help. Und exclude-type schließt eben den Typ tmpfs aus. Eine beispielhafte Ausgabe:
$ df -h --output=source,size,used,avail,target
Filesystem Size Used Avail Mounted on
C: 447G 334G 113G /
D: 932G 844G 89G /d
E: 477G 338G 140G /e
lsblk - list block devices
Bei lsblk geht es nun um die eigentliche Hardware, um "Block Devices". Es gibt einfach die Größe von Geräten und deren Partitionen aus - plus allerlei Informationen, die Euch tendenziell erstmal gar nicht interessieren. Erfreulicherweise gibt lsblk aber direkt im menschenlesbaren Format aus, die Aufgabe lautet also: Ausgabe formatieren:
lsblk -o NAME,SIZE,MOUNTPOINT
Über -o listet Ihr schlicht die Spalten, die Ihr haben wollt - und ein lsblk --help gibt Euch wirklich viele Spalten zur Auswahl! Da viele von Euch wohl unter Ubuntu arbeiten, noch ein Tipp: Bei Euch enthält die Ausgabe Dutzende Zeilen in der Art:
loop3 148.4M /snap/chromium/2415
Die ganzen loop-Devices gehören zu Ubuntus Paketmanagement Snap. Lästigerweise werden dabei installierte Programme als "Geräte" verstanden, was die Ausgaben von Tools wie lsblk total versaut. Also solltet Ihr auch hier etwas filtern:
lsblk -o NAME,SIZE,MOUNTPOINT | grep -v ^loop
Über grep könnt Ihr einfach nach allen Zeilen suchen, die nicht (-v) mit loop beginnen (^). Eine Ausgabe sieht dann etwa so aus:
NAME SIZE MOUNTPOINT
sda 59.6G
├─sda1 512M /boot/efi
├─sda2 1G /boot
└─sda3 58.1G
└─ubuntu--vg-ubuntu--lv 58.1G /
sdb 3.6T
└─sdb1 3.6T /media/evo
Falls Ihr mehr zu diesem obskuren "ubuntu--vg-ubuntu--lv" wissen wollt, schaut hier vorbei.
Zugegeben, das sind waren jetzt doch ziemlich viele Befehle, Optionen und zusätzliche Filter. Falls Ihr dazu mal Hilfe braucht, könnt Ihr auch unsere hauseigene Terminal-Hilfe befragen - direkt im Terminal:
curl cli.help/df
curl cli.help/du
curl cli.help/grep
cli.help kann Euch - mit einer Art Beta-Funktion - auch direkt hübsche Ausgaben mit df und lsblk liefern, sofern die Tools bei Euch schon laufen:
curl cli.help/version | sh
Damit wird ein kleines Skript ausgeführt, dass ein paar Systeminformationen hübsch aufbereitet präsentiert:
Hardware:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Model name: Intel(R) Pentium(R) Silver N5000 CPU @ 1.10GHz
Systeminfo:
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
Kernel:
5.15.0-69-generic
Devices:
NAME SIZE MOUNTPOINT
sda 59.6G
├─sda1 512M /boot/efi
├─sda2 1G /boot
└─sda3 58.1G
└─ubuntu--vg-ubuntu--lv 58.1G /
sdb 3.6T
└─sdb1 3.6T /media/evo
Speicherplatz:
Filesystem Size Used Avail Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 58G 41G 14G /
/dev/sda2 974M 253M 654M /boot
/dev/sda1 511M 6.1M 505M /boot/efi
/dev/sdb1 3.7T 2.7T 969G /media/evo
Wie Ihr die Kommandozeilenprogramme unter Windows nutzen könnt, zeigen wir hier.