Tämä on täysin hyödytön, tarpeeton käytännön sovelluksessa, mutta hauska pieni postaus *nix-järjestelmien hakemistoista. On perjantai.
Haastatteluissa herää usein tylsiä kysymyksiä inodeista, kaikki-on-tiedostoista, joihin harva osaa järkevästi vastata. Mutta jos kaivaa hieman syvemmälle, voit löytää mielenkiintoisia asioita.
Viestin ymmärtämiseksi muutama seikka:
- kaikki on tiedostoa. hakemisto on myös tiedosto
- inode tallentaa tiedoston metatiedot, mutta tiedoston nimeä ei tallenneta sinne
- tiedoston nimi tallennetaan hakemistotietoihin
- Hakemiston koko, sama, joka näkyy ls:ssä ja on oletuksena 4 kt, riippuu hakemistossa olevien tiedostojen määrästä ja niiden nimien pituudesta
- On selvää, että mitä enemmän tiedostoja, sitä suurempi on hakemiston koko
Nyt tässä on mielenkiintoinen osa: luomme hakemiston, jossa on miljoona tiedostoa, tarkistamme hakemiston koon ja poistamme sitten kaikki tiedostot ja katsomme hakemiston kokoa.
$ 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 .
Kuten näette, hakemiston koko ei ole muuttunut, vaikka siltä näyttää :)
Voit korjata vain hakemiston koon (poistamatta sitä) käyttämällä fsck:tä (ja -D-vaihtoehtoa) liittämättömässä tilassa.
Mutta kun menin etsimään, miksi tämä oli niin, kävi ilmi, että sellainen käytös oli jo 10 vuotta sitten
Lähde: will.com