Detta Àr ett helt vÀrdelöst, icke-anvÀndbart i praktisk tillÀmpning, men roligt litet inlÀgg om kataloger i *nix-system.
PÄ intervjuer dyker ofta trÄkiga frÄgor om inoder, allt-Àr-filer, som fÄ kan ge ett vettigt svar pÄ. Men om man grÀver lite djupare kan man hitta intressanta saker.
För att förstÄ inlÀgget nÄgra punkter:
- allt Àr en fil. en katalog Àr ocksÄ en fil
- i inoden lagras metadata om filen, men filnamnet lagras inte dÀr
- filnamnet lagras i katalogens data
- katalogens storlek, den som visas i ls och som standard Àr 4KB, beror pÄ antalet filer i katalogen och lÀngden pÄ deras namn
- det Àr uppenbart att ju fler filer, desto större blir katalogens storlek
Och nu till det intressanta: skapa en katalog med en miljon filer, kolla katalogens storlek och sedan ta bort alla filer och titta pÄ katalogens storlek.
$ mkdir niceDir && cd niceDir
# beroende pÄ lagringsmediumets hastighet, kan nÀsta kommando ta 2-10 minuter
$ 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 2 aug 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M 2 aug 13:37 .Som man kan se har katalogens storlek inte Ă€ndrats, Ă€ven om det verkar sĂ„ đ
Att reparera katalogens storlek (utan att ta bort) kan endast göras med hjÀlp av fsck (och alternativet -D) i avmonterat tillstÄnd.
Och nÀr jag började leta efter varför det Àr sÄ, visade det sig att detta beteende redan diskuterades för 10 Är sedan i lkml. Och enligt utvecklarna Àr en lösning inte vÀrd den insatta anstrÀngningen.
KĂ€lla: habr.com
