Dette er et helt unyttig, unĂždvendig i praktisk bruk, men morsom liten post om kataloger i *nix-systemer. Det er tross alt fredag.
PÄ intervjuer dukker det ofte opp kjedelige spÞrsmÄl om inode, alt-er-filer, som fÄ kan svare fornuftig pÄ. Men hvis man graver litt dypere, kan man finne interessante ting.
For Ä forstÄ posten, her er noen punkter:
- alt er en fil. en katalog er ogsÄ en fil
- i inoden lagres metadata fra filen, men filnavnet lagres ikke der
- filnavnet lagres i dataene til katalogen
- stÞrrelsen pÄ katalogen, som den som vises i ls og som standard er 4KB, avhenger av antall filer i katalogen og lengden pÄ navnene deres
- det er Äpenbart at jo flere filer, jo stÞrre er katalogstÞrrelsen
Og nÄ det interessante: vi lager en katalog med en million filer, sjekker stÞrrelsen pÄ katalogen, og sÄ sletter vi alle filene og ser pÄ stÞrrelsen pÄ katalogen.
$ mkdir niceDir && cd niceDir
# avhengig av hastigheten pÄ lagringsmediet kan neste kommando ta 2-10 minutter
$ 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 .Som man kan merke, har ikke stĂžrrelsen pĂ„ katalogen endret seg, selv om det ser ut som det burde đ
For Ä fikse stÞrrelsen pÄ katalogen (uten Ä slette) kan man bare bruke fsck (og -D alternativet) i frakoblet tilstand.
Men da jeg gikk for Ä finne ut hvorfor dette er, viste det seg at for 10 Är siden var denne oppfÞrselen allerede i lkml. Og ifÞlge utviklerne er det ikke verdt de ekstra anstrengelsene Ä fikse det.
Kilde: habr.com
