Ovo je potpuno beskoristan, nepotreban u praktičnoj primjeni, ali smiješan mali post o direktorijima u *nix sistemima. Petak je.
Tokom intervjua često se postavljaju dosadna pitanja o inode, sve-je-fajlovi, na koja malo ljudi može razumno odgovoriti. Ali ako kopate malo dublje, možete pronaći zanimljive stvari.
Da biste razumjeli post, nekoliko stvari:
- sve je fajl. direktorij je također datoteka
- inode pohranjuje metapodatke iz datoteke, ali naziv datoteke nije tamo pohranjen
- naziv datoteke je pohranjen u podacima direktorija
- Veličina direktorija, ista ona koja je prikazana u ls-u i po defaultu je 4Kb, ovisi o broju datoteka u direktoriju i dužini njihovih imena
- Očigledno, što više datoteka, to je veća veličina direktorija
Evo zanimljivog dijela: kreiramo direktorij s milijun datoteka, provjeravamo veličinu direktorija, a zatim brišemo sve datoteke i gledamo veličinu direktorija.
$ 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 .
Kao što vidite, veličina direktorija se nije promijenila, iako se čini :)
Možete samo popraviti veličinu direktorija (bez brisanja) koristeći fsck (i opciju -D) u nemontiranom stanju.
Ali kada sam krenuo da tražim zašto je to tako, ispostavilo se da je pre 10 godina takvo ponašanje već bilo
izvor: www.habr.com