Ini sama sekali tidak berguna, tidak perlu dalam aplikasi praktikal, tetapi catatan kecil yang lucu tentang direktori dalam sistem *nix. Hari Jumaat.
Semasa temu bual, soalan yang membosankan sering timbul tentang inod, everything-is-files, yang hanya segelintir orang yang boleh menjawab dengan waras. Tetapi jika anda menggali lebih dalam, anda boleh menemui perkara yang menarik.
Untuk memahami siaran, beberapa perkara:
- semuanya adalah fail. direktori juga merupakan fail
- inode menyimpan metadata daripada fail, tetapi nama fail tidak disimpan di sana
- nama fail disimpan dalam data direktori
- Saiz direktori, sama yang ditunjukkan dalam ls dan 4Kb secara lalai, bergantung pada bilangan fail dalam direktori dan panjang nama mereka
- Jelas sekali, lebih banyak fail, lebih besar saiz direktori
Sekarang inilah bahagian yang menarik: kami mencipta direktori dengan sejuta fail, semak saiz direktori, dan kemudian padam semua fail dan lihat saiz direktori.
$ mkdir niceDir && cd niceDir
# Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Π½ΠΎΡΠΈΡΠ΅Π»Ρ, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ 2-10 ΠΌΠΈΠ½ΡΡ
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
Seperti yang anda lihat, saiz direktori tidak berubah, walaupun nampaknya :)
Anda hanya boleh menetapkan saiz direktori (tanpa memadamkannya) menggunakan fsck (dan pilihan -D) dalam keadaan tidak dilekapkan.
Tetapi apabila saya pergi untuk mencari mengapa ini berlaku, ternyata 10 tahun yang lalu kelakuan sedemikian sudah berlaku
Sumber: www.habr.com