5.2. Verweise

Um das Konzept der Verweise zu verstehen, wird dies am besten an einem Beispiel verdeutlicht. Zunächst wird eine normale Datei angelegt:

$ pwd
/home/franz/exemple
$ ls
$ touch a
$ ls -il a
  32555 -rw-rw-r--    1 franz    franz           0 Dez 10 08:12 a

Die Option -i des Kommandos ls zeigt Ihnen als erste Spalte der Ausgabe die Inode-Nummer einer jeden Datei. Wie Sie sehen können, waren vor dem Erzeugen der Datei a keine anderen Dateien in diesem Verzeichnis vorhanden. Interessant ist auch das dritte Feld der Ausgabe, der Verweiszähler einer jeden Datei.

Das Kommando touch a kann in Wirklichkeit in zwei verschiedene Aktionen unterteilt werden:

  1. Erzeugung eines Inodes des Typs ,,normale Datei``, dem das System die Nummer 32555 zugewiesen hat.

  2. Erzeugung eines Verweises auf diesen Inode mit dem Namen a im aktuellen Verzeichnis /home/franz/example. Also stellt die Datei /home/franz/example/a lediglich einen Verweis auf den Inode mit der Nummer 32555 dar. Wie der Verweis-Zähler zeigt, ist dies momentan noch der einzige.

Wenn wir nun aber

$ ln a b
$ ls -il a b
  32555 -rw-rw-r--    2 franz    franz           0 Dez 10 08:12 a
  32555 -rw-rw-r--    2 franz    franz           0 Dez 10 08:12 b
$

eingeben, haben wir einen weiteren Verweis auf den selben Inode erzeugt. Wie Sie sehen können, haben wir keine Datei mit dem Namen b erzeugt, sondern einfach nur einen weiteren Verweis auf den Inode mit der Nr. 32555 im selben Verzeichnis hinzugefügt. In der Ausgabe des Befehls ls -l erkennen Sie, das der Verweis-Zähler nun einen Wert von 2 aufweist.

Falls wir nun:

$ rm a
$ ls -il b
  32555 -rw-rw-r--    1 franz    franz           0 Dez 10 08:12 b
$

ausführen, sehen wir, dass, obwohl wir die ,,Original-Datei`` gelöscht haben, der Inode immer noch existiert. Jetzt stellt allerdings die Datei /home/franz/example/b den einzigen Verweis dar.

 

Also wird ein Inode nur dann referenziert, falls mindestens ein namentlicher Verweis in einem beliebigen Verzeichnis existiert.[1] Verzeichnisse selbst werden ebenfalls als Inodes gespeichert, ihr Verweis-Zähler zeigt jedoch, im Gegensatz zu allen anderen Dateitypen die Anzahl ihrer Unterverzeichnisse an. In einem Verzeichnis existieren immer mindestens zwei Verweise. Einen auf das aktuelle (,,.``) und einen auf das übergeordnete Verzeichnis (,,..``).

Typische Beispiele für nicht referenzierte Dateien (also solche, die keinen Namen tragen), sind Netzwerkverbindungen. Sie werden niemals einen Eintrag in Ihrem Dateibaum finden, der zu Ihrer Verbindung mit http://www.linux-mandrake.com/ gehört, egal welches Verzeichnis Sie auch betrachten. Analog existiert auch eine Datei, wenn Sie eine Ein- und Ausgabeumleitung auf einer Shell durchführen, die aber ebenfalls nicht referenziert wird.

Fußnoten

[1]

Jedenfalls wenn das Verzeichnis im gleichen Dateisystem vorhanden ist.


Tux on Star from MandrakeSoft Linux ist ein eingetragenes Warenzeichen von Linus Torvalds. Alle anderen Warenzeichen und Copyrights sind das Eigentum ihrer Inhaber.
Sofern nichts anderes Angaben ist, unterliegen die Inhalte der Seiten sowie alle Bilder dem Copyright von MandrakeSoft S.A. und MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/