Katakanlah saya baru saja membuat direktori newDirectory dan kemudian saya melakukan perintah ls -ld. Saya melihat bahwa jumlah tautan keras adalah 2. Apa sebenarnya yang membuat tautan keras 2 dari awal? Juga apakah jumlah subdirektori di direktori saat ini sama dengan jumlah tautan keras – 2?
Jawaban yang Diterima:
Secara historis, sistem file Unix pertama membuat dua entri di setiap direktori:.
menunjuk ke direktori itu sendiri, dan ..
menunjuk ke induknya. Ini memberikan cara mudah untuk melintasi sistem file, baik untuk aplikasi maupun untuk OS itu sendiri.
Jadi setiap direktori memiliki jumlah tautan 2+n di mana n adalah jumlah subdirektori. Tautan adalah entri untuk direktori itu di induknya, .
entri, dan ..
entri di setiap subdirektori. Misalnya, ini adalah konten dari subpohon yang di-root di /parent
, semua direktori:
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
Kemudian dir
memiliki jumlah tautan 5:dir
entri di /parent
, .
entri di /parent/dir
, dan tiga ..
entri di setiap /parent/dir/sub1
, /parent/dir/sub2
dan /parent/dir/sub3
. Sejak /parent/dir/sub1
tidak memiliki subdirektori, jumlah tautannya adalah 2 (sub1
entri di /parent/dir
dan .
entri di /parent/dir/sub1
).
Untuk meminimalkan jumlah casing khusus untuk direktori root, yang tidak memiliki induk yang "benar", direktori root berisi ..
entri menunjuk ke dirinya sendiri. Dengan cara ini, juga memiliki jumlah tautan 2 ditambah jumlah subdirektori, 2 adalah /.
dan /..
.
Sistem file yang lebih baru cenderung melacak direktori induk dalam memori dan biasanya tidak memerlukan .
dan ..
ada sebagai entri yang sebenarnya; sistem unix modern yang khas memperlakukan .
dan ..
sebagai nilai khusus sebagai bagian dari kode sistem file tipe-file-independen. Beberapa sistem file masih menyertakan .
dan ..
entri, atau berpura-pura meskipun tidak ada yang muncul di disk.
Sebagian besar sistem file masih melaporkan jumlah tautan 2+n untuk direktori terlepas dari apakah .
dan ..
entri ada, tetapi ada pengecualian, misalnya btrfs tidak melakukan ini.