Ez egy teljesen haszontalan, gyakorlati alkalmazásban szükségtelen, de vicces kis bejegyzés a *nix rendszerek könyvtárairól. Péntek van.
Az interjúk során gyakran merülnek fel unalmas kérdések az inódákkal, a minden-is-fájlokkal kapcsolatban, amire kevesen tudnak épeszű választ adni. De ha egy kicsit mélyebbre ásol, érdekes dolgokat találhatsz.
A poszt megértéséhez néhány pont:
- minden egy fájl. könyvtár is egy fájl
- az inode tárolja a fájl metaadatait, de a fájl nevét nem tárolja ott
- a fájlnév a könyvtáradatokban tárolódik
- A könyvtár mérete, ugyanaz, amely az ls-ben látható, és alapértelmezés szerint 4 Kb, a könyvtárban lévő fájlok számától és nevük hosszától függ
- Nyilvánvaló, hogy minél több fájl, annál nagyobb a könyvtár mérete
Most itt van az érdekes rész: létrehozunk egy könyvtárat millió fájllal, ellenőrizzük a könyvtár méretét, majd töröljük az összes fájlt, és megnézzük a könyvtár méretét.
$ 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 .
Mint látható, a könyvtár mérete nem változott, bár úgy tűnik :)
Egy könyvtár méretét (törlés nélkül) csak az fsck (és a -D kapcsoló) használatával javíthatja, ha nem csatlakoztatva van.
De amikor elmentem megkeresni, hogy miért van ez így, kiderült, hogy 10 évvel ezelőtt már volt ilyen viselkedés
Forrás: will.com