Angenommen, ich erstelle einfach das Verzeichnis newDirectory und führe dann den Befehl ls -ld aus. Ich sehe, dass die Anzahl der Hardlinks 2 ist. Was genau macht den Hardlink von Anfang an zu 2? Ist die Anzahl der Unterverzeichnisse im aktuellen Verzeichnis auch gleich der Anzahl der festen Links – 2?
Akzeptierte Antwort:
Historisch hat das erste Unix-Dateisystem zwei Einträge in jedem Verzeichnis erstellt:.
auf das Verzeichnis selbst zeigt, und ..
zeigt auf seinen Elternteil. Dies bot eine einfache Möglichkeit, das Dateisystem zu durchlaufen, sowohl für Anwendungen als auch für das Betriebssystem selbst.
Somit hat jedes Verzeichnis eine Linkanzahl von 2+n, wobei n die Anzahl der Unterverzeichnisse ist. Die Links sind der Eintrag für dieses Verzeichnis in seinem Elternverzeichnis, dem eigenen .
des Verzeichnisses Eintrag und den ..
Eintrag in jedem Unterverzeichnis. Angenommen, dies ist beispielsweise der Inhalt des Unterbaums, der unter /parent
verwurzelt ist , alle Verzeichnisse:
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
Dann dir
hat eine Linkanzahl von 5:das dir
Eintrag in /parent
, der .
Eintrag in /parent/dir
, und die drei ..
Einträge jeweils in /parent/dir/sub1
, /parent/dir/sub2
und /parent/dir/sub3
. Seit /parent/dir/sub1
kein Unterverzeichnis hat, seine Linkanzahl ist 2 (die sub1
Eintrag in /parent/dir
und der .
Eintrag in /parent/dir/sub1
).
Um die Menge an Sonderfällen für das Root-Verzeichnis zu minimieren, das kein „richtiges“ Elternverzeichnis hat, enthält das Root-Verzeichnis einen ..
Eintrag, der auf sich selbst zeigt. Auf diese Weise hat es auch eine Linkanzahl von 2 plus die Anzahl der Unterverzeichnisse, wobei die 2 /.
ist und /..
.
Neuere Dateisysteme neigen dazu, übergeordnete Verzeichnisse im Speicher zu verfolgen und benötigen normalerweise .
nicht und ..
als tatsächliche Einträge existieren; typische moderne Unix-Systeme behandeln .
und ..
als spezielle Werte als Teil des dateisystemtypunabhängigen Dateisystemcodes. Einige Dateisysteme enthalten immer noch .
und ..
Einträge, oder vortäuschen, obwohl nichts auf der Festplatte erscheint.
Die meisten Dateisysteme melden immer noch eine Linkanzahl von 2+n für Verzeichnisse, unabhängig davon, ob .
und ..
Einträge existieren, aber es gibt Ausnahmen, zum Beispiel macht btrfs das nicht.