See on täiesti kasutu, praktilises rakenduses mittevajalik, kuid naljakas väike postitus *nix süsteemide kataloogidest. On reede.
Intervjuude käigus tekivad sageli igavad küsimused inoodide, kõik-on-failide kohta, millele vähesed oskavad mõistlikult vastata. Aga kui natukenegi süveneda, võib huvitavaid asju leida.
Postituse mõistmiseks paar punkti:
- kõik on fail. kataloog on ka fail
- inode salvestab faili metaandmed, kuid failinime sinna ei salvestata
- faili nimi salvestatakse kataloogiandmetesse
- Kataloogi suurus, sama, mis kuvatakse ls-is ja on vaikimisi 4Kb, oleneb failide arvust kataloogis ja nende nimede pikkusest
- Ilmselgelt, mida rohkem faile, seda suurem on kataloogi suurus
Siin on huvitav osa: loome miljoni failiga kataloogi, kontrollime kataloogi suurust ja seejärel kustutame kõik failid ja vaatame kataloogi suurust.
$ 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 .
Nagu näete, pole kataloogi suurus muutunud, kuigi tundub :)
Kataloogi suurust (ilma seda kustutamata) saate määrata ainult ühendamata olekus, kasutades fsck-d (ja suvandit -D).
Aga kui läksin otsima, miks see nii on, siis selgus, et 10 aastat tagasi oli selline käitumine juba olemas
Allikas: www.habr.com