Tai visiškai nenaudingas, praktiškai nereikalingas, bet juokingas įrašas apie katalogus *nix sistemose. Penktadienis.
Interviu metu dažnai iškyla nuobodūs klausimai apie inodus, viskas-yra-failus, į kuriuos mažai kas gali protingai atsakyti. Tačiau pasigilinus galima rasti įdomių dalykų.
Norėdami suprasti įrašą, keli punktai:
- viskas yra failas. katalogas taip pat yra failas
- inode saugo metaduomenis iš failo, bet failo pavadinimas ten nesaugomas
- failo pavadinimas saugomas katalogo duomenyse
- Katalogo dydis, tas pats, kuris rodomas ls ir pagal numatytuosius nustatymus yra 4Kb, priklauso nuo failų skaičiaus kataloge ir jų pavadinimų ilgio
- Akivaizdu, kad kuo daugiau failų, tuo didesnis katalogo dydis
Dabar čia yra įdomioji dalis: sukuriame katalogą su milijonu failų, patikriname katalogo dydį, tada ištriname visus failus ir žiūrime į katalogo dydį.
$ 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 .
Kaip matote, katalogo dydis nepasikeitė, nors atrodytų :)
Katalogo dydį (jo neištrindami) galite nustatyti tik naudodami fsck (ir parinktį -D), kai ji nesujungta.
Bet kai nuėjau ieškoti, kodėl taip yra, paaiškėjo, kad toks elgesys jau buvo prieš 10 metų
Šaltinis: www.habr.com