Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
92 6 Dateien: Aufzucht und Pflege<br />
Inode-Nummern<br />
dieselbe Datei handelt, ist nur mit Hilfe von »ls -i« eindeutig zu entscheiden.<br />
In diesem Fall muss die in der ersten Spalte angezeigte Dateinummer für beide<br />
Dateien identisch sein. Dateinummern, auch Inode-Nummern genannt, identifizieren<br />
Dateien eindeutig auf ihrem Dateisystem:<br />
$ ls -i<br />
876543 liste 876543 liste2<br />
B<br />
»Inode« ist kurz für indirection node, also etwa »Indirektionsknoten« oder<br />
»Weiterleitungsknoten«. In den Ino<strong>des</strong> sind alle Informationen gespeichert,<br />
die das System über eine Datei hat, bis auf den Namen. Jede Datei hat genau<br />
ein Inode.<br />
Wenn Sie den Inhalt einer der beiden Dateien verändern, ändert sich der Inhalt der<br />
anderen ebenfalls, da in Wirklichkeit ja nur eine einzige Datei mit der eindeutigen<br />
Nummer 876543 existiert. Wir haben der Datei mit der Nummer 876543 lediglich<br />
einen weiteren Namen gegeben.<br />
B<br />
Verzeichnisse sind nichts anderes als Tabellen, in denen Dateinamen Inode-<br />
Nummern zugeordnet werden. Offensichtlich kann es in einer Tabelle mehrere<br />
Einträge mit verschiedenen Namen und derselben Inode-Nummer geben.<br />
Ein Verzeichniseintrag mit einem Namen und einer Inode-Nummer<br />
heißt »Link«.<br />
Sie sollten sich klar machen, dass es bei einer Datei mit zwei Links nicht möglich<br />
ist, festzustellen, welcher Name »das Original« ist, also der erste Parameter im<br />
ln-Kommando. Beide Namen sind aus der Sicht <strong>des</strong> Systems absolut gleichwertig<br />
und ununterscheidbar.<br />
A<br />
Links auf Verzeichnisse sind unter <strong>Linux</strong> übrigens nicht erlaubt. Ausgenommen<br />
davon sind ».« und »..«, die vom System für je<strong>des</strong> Verzeichnis verwaltet<br />
werden. Da auch Verzeichnisse Dateien sind und demnach Inode-<br />
Nummern haben, können Sie so verfolgen, wie das Dateisystem intern zusammenhängt.<br />
(Siehe hierzu auch Übung 6.20)<br />
Wenn Sie eine der Dateien mit rm »löschen«, reduziert das zunächst nur die Anzahl<br />
der Namen für Datei Nummer 876543 (der Referenzzähler wird entsprechend<br />
angepasst). Erst wenn der Referenzzähler durch das Entfernen eines Namens den<br />
Wert 0 annimmt, wird die Datei tatsächlich gelöscht.<br />
$ rm liste<br />
$ ls -li<br />
876543 -rw-r--r-- 1 hugo users 2500 Oct 4 11:11 liste2<br />
B<br />
B<br />
Da Inode-Nummern nur auf demselben physikalischen Dateisystem (Partition,<br />
USB-Stick, …) eindeutig sind, sind solche Verknüpfungen nur in demselben<br />
Dateisystem möglich, wo auch die Datei liegt.<br />
Ganz stimmt es nicht mit dem Löschen der Dateidaten: Wenn der letzte<br />
Dateiname entfernt wird, ist die Datei nicht mehr zugänglich, aber wenn<br />
ein Prozess noch mit ihr arbeitet, darf er sie weiterbenutzen, bis er sie explizit<br />
schließt oder sich beendet. In Unix-Programmen ist das ein gängiges<br />
Idiom für den Umgang mit temporären Dateien, die beim Programmende<br />
verschwinden sollen: Sie erzeugen sie mit Schreib- und Lesezugriff und »löschen«<br />
sie dann gleich wieder, ohne sie jedoch gleich zu schließen. Anschließend<br />
können Sie Daten hinein schreiben und später an den Dateianfang zurückspringen,<br />
um sie wieder zu lesen.<br />
Copyright © 2012 <strong>Linup</strong> <strong>Front</strong> GmbH