Ĉi tio estas tute senutila, nenecesa en praktika aplikado, sed amuza afiŝo pri dosierujoj en *nix-sistemoj. Estas vendredo.
Dum intervjuoj ofte aperas enuigaj demandoj pri inodoj, ĉio-estas-dosieroj, kiujn malmultaj homoj povas prudente respondi. Sed se vi fosas iom pli profunde, vi povas trovi interesajn aferojn.
Por kompreni la afiŝon, kelkaj punktoj:
- ĉio estas dosiero. dosierujo estas ankaŭ dosiero
- la inodo stokas metadatenojn de la dosiero, sed la dosiernomo ne estas konservita tie
- la dosiernomo estas konservita en la dosierujo-datumoj
- La grandeco de la dosierujo, la sama kiu estas montrita en ls kaj estas 4Kb defaŭlte, dependas de la nombro da dosieroj en la dosierujo kaj la longeco de iliaj nomoj
- Evidente, ju pli da dosieroj, des pli granda estas la dosierujo
Nun jen la interesa parto: ni kreas dosierujon kun miliono da dosieroj, kontrolas la grandecon de la dosierujo, kaj poste forigas ĉiujn dosierojn kaj rigardas la grandecon de la dosierujo.
$ 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 .
Kiel vi povas vidi, la dosierujo ne ŝanĝiĝis, kvankam ŝajnus :)
Vi povas nur ripari la grandecon de dosierujo (sen forigi ĝin) uzante fsck (kaj la opcion -D) en nemuntita stato.
Sed kiam mi iris serĉi kial ĉi tio estis tiel, montriĝis, ke antaŭ 10 jaroj tia konduto jam havis
fonto: www.habr.com