Zu Befehl

Aus LinuxUser 04/2001

Zu Befehl

Mein rechter, rechter Platz ist frei – df, du

Mit einem schnellen Internetzugang steigt bei vielen Anwendern die Download-Rate und damit zwangsläufig der Speicherverbrauch auf der eigenen Harddisk. Auch auf der Kommandozeile gibt es Programme, mit denen Sie Ihren Festplattenplatz schnell und sicher verwalten können. In dieser “Zu Befehl”-Folge geht es um Dateisysteme, um Dateien und ihre Anordnung und Eigenschaften – und um die Programme df und du. Begeben Sie sich in die Tiefen des Filesystems und finden Sie heraus, welche Dateien den Speicher vertilgen!

Unter einem Dateisystem ganz allgemein können Sie sich die Organisation von Dateien und Verzeichnissen auf einem physikalischen Gerät, z. B. Festplatte, CD-ROM oder Diskette, vorstellen. Schauen Sie sich die Struktur Ihres Linux-Systems an: Ausgehend vom Wurzelverzeichnis / (Schrägstrich – nicht zu verwechseln mit /root, dem Homeverzeichnis des Users root) gibt es Unterverzeichnisse wie /etc oder /home, die wiederum darunterliegende Verzeichnisse haben usw. Der Begriff “Dateisystem” taucht auch in einem anderen Zusammenhang auf: wenn es um einen bestimmten Typ von Dateisystem geht. Das Standarddateisystem unter Linux heißt beispielsweise ext2 (steht für “extended filesystem, Version 2”), ab Windows 95 gibt es vfat, ntfs ermöglicht Lesezugriff auf Windows NT-Partitionen, usw.

No space left on device?

Jetzt sind Sie gefragt: Tippen Sie einfach mal df (steht für “disk free”), um mehr über die Auslastung Ihres Systems zu erfahren:

huhn@asteroid:~$ df
 Filesystem           1k-blocks      Used Available Use% Mounted on
 /dev/hda2                46664     31348     12907  71% /
 /dev/hda5               280005     57209    208340  22% /var
 /dev/hda6              3937220   1499304   2237912  40% /usr
 /dev/hda7              5866360    367476   5200880   7% /opt
 /dev/hda8             19283304   6432372  11871372  35% /home
 /dev/hdb1               521808    521784        24 100% /mnt/c
 /dev/hdb5              5756032   5700228     55804  99% /mnt/d

In dieser Tabelle sehen Sie viele verschiedene Informationen auf einen Blick: /dev/hda2 ist z. B. der Name einer Partition, weiterhin sehen Sie, wie groß die Partition ist und wieviele Blöckedavon benutzt oder noch frei sind. Dahinter kommt eine Prozent-Angabe, wieviel im Verhältnis zum gesamten Platz benutzt ist, und als letzte Information der Ort, wohin das Dateisystem gemountetist. Wenn Ihnen die Darstellung in 1 kB-Blöcken zu unübersichtlich ist, probieren Sie die Option df -h (für --human-readable). Dabei wird auf- oder abgerundet in die nächstliegende Einheit: 46664 kB werden also als 46M ausgegeben oder 3937220 kB als 3.8G. Der Nachteil an dieser Variante: die Zeilen sind in unterschiedlichen Einheiten dargestellt – durch das Runden werden die Angaben ungenauer. Natürlich können Sie auch selbst entscheiden, ob die Belegung in kB oder MB angezeigt werden soll: df -k (für --kilobytes) oder df -m (für --megabytes).

Abbildung 1: Grafisches <code srcset=

df unter GNOME – gdiskfree” width=”300″ height=”86″ /> Abbildung 1: Grafisches df unter GNOME – gdiskfree

Abbildung 2: Grafisches <code srcset=

df bei KDE – kdf” width=”300″ height=”138″ /> Abbildung 2: Grafisches df bei KDE – kdf

Viele von den mitgelieferten Optionen des Kommandos df werden Sie nicht für den Alltag am Linux-Rechner benötigen. Dazu gehören df -a (steht für --all), womit auch “Pseudo”-Filesysteme dargestellt werden wie die Prozessinformationen unter /proc, oder df -l (Langform: --local), womit aus dem Netz gemountete Dateisysteme bei der Anzeige weggelassen werden.

Das Ei-node des Kolumbus…

Es kommt vor, dass die Meldung “No space left on device” angezeigt wird, aber keineswegs eine hundertprozentige Auslastung des Dateisystems erreicht ist. Um diesem Rätsel auf die Spur zu kommen, sollten Sie einiges über die internen Organisation von Unix-Dateisystemen wissen. Eine Datei hat im wesentlichen zwei Eigenschaften: Sie belegt Platz im Dateisystem (physikalischer Speicher), und sie hat mindestens einen Namen. Verzeichnisse sind streng genommen Dateien, die Links zu anderen Dateien oder Verzeichnissen enthalten. Der Eintrag einer Datei im Verzeichnis besteht aus einem Namen und einer sogenannten “Knotennummer” – der i-node.

Jedes Dateisytem besitzt ein Inhaltsverzeichnis, in dem alle enthaltenen Dateien verzeichnet sind. Die Einträge, i-nodes genannt, enthalten Informationen über Dateien. In diesen Informationsknoten werden in 128 Bytes alle Verwaltungsinformationen der Files (mit Ausnahme des Dateinamens) gespeichert:

  • Typ und Zugriffsrechte (normale Datei, Verzeichnis, Gerätedatei, Symlink, lesen, schreiben, ausführen)
  • Referenzzähler (Anzahl der Namen, die auf die Datei zeigen; man kann dieselbe physikalische Datei mit mehreren Namen versehen – Hardlink)
  • Dateieigentümer und Gruppenzugehörigkeit
  • Größe in Bytes
  • Erstellungsdatum
  • Modifikationsdatum
  • Datum des letzten Zugriffs
  • Zeiger auf den physikalischen Datenbereich

Die Auslastung dieses “Inhaltsverzeichnisses”, der i-node Liste, erhalten Sie mit df -i:

huhn@asteroid:~$ df -i
 Filesystem            Inodes   IUsed   IFree IUse% Mounted on
 /dev/hda2              12048    7333    4715   61% /
 /dev/hda5              72288    6314   65974    9% /var
 /dev/hda6             500960  131580  369380   26% /usr
 /dev/hda7             746304      11  746293    0% /opt
 /dev/hda8            2452800   14423 2438377    1% /home
 /dev/hdb1                  0       0       0    -  /mnt/c
 /dev/hdb5                  0       0       0    -  /mnt/d

Die Größe des Inhaltsverzeichnisses wird beim Erstellen des Dateisystems festgelegt, dieses Verzeichnis kann also “überlaufen”, obwohl noch Platz da ist – wenn man viele kleine Dateien hat, wie z. B. News-Artikel. Wenn Sie also wissen, dass viele kleine Dateien oder symbolische Links angelegt werden sollen, können Sie eine größere i-node-Dichte wählen.

Who<C>du<C>nnit?

Machen Sie sich auf die Suche nach den Files, die den Speicherplatz belegen – in welchem Verzeichnis des Dateisystems sitzen die Übeltäter? Das Programm du liefert Informationen über den Speicherbedarf von Dateien und Verzeichnissen. Wenn Sie in Ihrem Home-Verzeichnis einfach nur du an der Kommandozeile aufrufen, fliegen die Daten nur so über den Bildschirm – es darf also ruhig etwas gezielter sein. Ein du *.html untersucht nur die Dateien, die auf .html enden. Gezielt auf ein Verzeichnis losgelassen, werden auch alle untergeordneten Directories mit einbezogen:

huhn@asteroid:~/linux-magazin$ du zubefehl/
 48      zubefehl/zweitefolge
 60      zubefehl/erstefolge
 52      zubefehl/drittefolge
 20      zubefehl/viertefolge
 4       zubefehl/fuenftefolge/test
 …
 2360    zubefehl

Am Schluss steht die Zusammenfassung – alle Angaben sind standardmäßig in kByte. Wie auch bei df gibt es den Parameter -h (für --human-readable). Wollen Sie nur das Endergebnis, verwenden Sie du -s verzeichnis (“-s” für --summarize: zusammenfassen). Das funktioniert allerdings nicht, wenn Dateien eines bestimmten Typs ausgewählt werden. Ein du fun/bilder/*.jpg listet zwar für alle JPGs den verbrauchten Platz auf, eine Zusammenfassung gibt es hier allerdings nur, wenn die Option -c (oder die Langform --total) verwendet wird. Die Tiefe der zu durchforstenden Verzeichnisse können Sie übrigens auch mit dem Parameter --max-depth=DEPTH (wobei DEPTH durch eine Ziffer ersetzt wird) angeben.

Natürlich ist es manchmal praktisch, ein grafisches Tool von KDE oder Gnome zum Aufstöbern von “Plattenplatzfressern” zu verwenden, der Vorteil der Kommandozeile liegt allerdings in der geschickten Kombination von Befehlen. Schauen Sie sich z. B. einmal sort an. Der Name ist Programm: Hier wird nach von Ihnen vorgegeben Kriterien sortiert. Der Parameter -n bewirkt, dass Zahlen numerisch sortiert werden. Während normalerweise 3 hinter 24 und 24 hinter 115 eingeordnet würde, da die ersten Zeichen (3, 2, 1) relevant sind, wertet sort -n die Zahlen korrekt aus. Die Option -r sortiert in umgekehrter Reihenfolge (“reverse”). Sollte Ihnen also auffallen, dass die /home-Partition fast voll ist, finden Sie den Übeltäter sehr schnell mit dem Aufruf:

asteroid:~# du -s /home/* | sort -rn
 6356156 /home/user1
 47304   /home/user2
 18864   /home/user3
 …

Sie wollen nur die zwei schlimmsten Verbraucher? Dann schalten Sie eben noch ein “| head -n 2” dahinter:

asteroid:~# du -s /home/* | sort -rn | head -n 2
 6356156 /home/user1
 47304   /home/user2
 asteroid:~#

Versuchen Sie doch mal, ein grafisches Frontend zu finden, das genau diese Funktionalität bietet…

Glossar

Blöcke

Man sieht hier, dass Dateisysteme in Abschnitte bestimmter Größe gegliedert sind. Hier werden die Blöcke 1 kB groß dargestellt, d. h. 1024 Bytes. Wenn Sie beispielsweise wissen möchten, wieviele Bytes tatsächlich in der Partition /dev/hda2 vorhanden sind, multiplizieren Sie einfach 46664 mit 1024: 47783936 Bytes.

gemountet

Mounten bezeichnet das “Einhängen” eines Dateisystems in einen Gesamtdateibaum. Anders als unter DOS und Windows gibt es unter Unix keine Laufwerksbuchtaben, vielmehr wird jede Partition irgendwo unterhalb des sogenannten Root-Verzeichnisses (Wurzelverzeichnis) angelegt.

Hardlink

Von mehreren Stellen in Verzeichnissen wird auf denselben i-node einer Datei verwiesen. Daher haben alle Hardlinks einer Datei dieselben Besitzer, Gruppen, Zugriffsrechte usw.

LinuxUser 04/2001 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
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben