- Dave McKay
@TheGurkha
- 19. joulukuuta 2019, 8:00 EDT
Kun käytät Linux – du
komento, voit saada sekä todellinen levytilan käyttö ja todellinen koko tiedoston tai hakemiston. Selitämme, miksi arvot eivät ole samat.
varsinainen Levykäyttö ja todellinen koko
Tiedoston koko ja kiintolevyllä oleva tila ovat harvoin samat., Levytila jaetaan lohkoina. Jos tiedosto on lohkoa pienempi, sille jaetaan vielä kokonainen lohko, koska tiedostojärjestelmässä ei ole käytössä pienempää kiinteistöyksikköä.
ellei Tiedoston koko Ole tarkka palikoiden moninkertainen, sen kiintolevyllä käyttämä tila on aina pyöristettävä ylöspäin seuraavaan koko lohkoon. Esimerkiksi jos tiedosto on suurempi kuin kaksi lohkoa mutta pienempi kuin kolme, sen säilömiseen tarvitaan vielä kolme lohkoa tilaa.
tiedoston kokoon nähden käytetään kahta mittausta., Ensimmäinen on tiedoston todellinen koko,joka on tiedoston muodostavien sisältöjen määrä. Toinen on tiedoston tehokas koko kiintolevyllä. Tämä on määrä tiedostojärjestelmän lohkojen tarpeen tallentaa tiedoston.
an Example
Let ’ s look at a simple example., Ohjaamme yhden merkin tiedostoon luoda pieni tiedosto:
echo "1" > geek.txt
– Nyt emme enää käytä pitkä muoto listalle, ls
, tarkastella tiedoston pituus:
ls -l geek.txt
pituus on numeerinen arvo, joka seuraa dave dave
merkinnät, joka on kaksi tavua. Miksi se on kaksi tavua, kun lähetimme vain yhden merkin tiedostoon? Katsotaanpa, mitä tiedoston sisällä tapahtuu.,
käytetään hexdump
komento, joka antaa meille tarkan byte count ja antaa meille mahdollisuuden ”nähdä” ei-tulostus merkkiä heksadesimaaliarvot. Voimme myös käyttää -C
(kanoninen) vaihtoehto pakottaa lähtö näyttää heksadesimaaliluvut kehossa lähtö, sekä niiden aakkosnumeerinen merkki vastineet:
hexdump -C geek.txt
lähtö osoittaa meille, että, alkaen klo offset 00000000 tiedoston, siellä on tavu, joka sisältää heksadesimaali arvo 31, ja yksi, joka sisältää heksadesimaalinen arvo 0A., Lähdön oikea osa kuvaa näitä arvoja aakkosnumeerisina merkkeinä mahdollisuuksien mukaan.
heksadesimaalista arvoa 31 käytetään kuvaamaan numeroa yksi. Heksadesimaaliarvoa 0A käytetään kuvaamaan Viivasyöttömerkkiä, jota ei voida esittää aakkosnumeerisena merkkinä, joten se esitetään jaksona (.) sijaan. Rivinvaihtomerkki on lisätty echo
. Oletuksena echo
alkaa uusi rivi, kun se näyttää tekstiä se tarvitsee kirjoittaa terminaali-ikkuna.,
Että yhtäpitävyyden ulostulo ls
ja samaa mieltä, että tiedoston pituus on kaksi tavua.
aiheeseen LIITTYVÄT: Miten Käyttää ls Komento Luetella Tiedostoja ja Hakemistoja Linux
Nyt, käytämme du
komento tarkastella tiedoston koko:
du geek.txt
Se sanoo koko on neljä, mutta neljä mikä?
On Olemassa Lohkot, ja Sitten On Olemassa Lohkoja
Kun du
reports-koot lohkot, koko se käyttää riippuu useista tekijöistä., Voit määrittää, mitä lohkon kokoa sen pitäisi käyttää komentorivillä. Jos et pakota du
käyttämään tiettyä lohkokokoa, se noudattaa tiettyjä sääntöjä päättääkseen, mitä niistä käytetään.
Ensimmäinen, se tarkistaa seuraavat ympäristömuuttujat:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- LOHKOKOKOA
Jos jokin näistä olemassa, lohkon koko on joukko, ja du
pysähtyy tarkkailun. Jos ei ole asetettu, du
oletuksena lohkon koko kuitenkin 1024 tavua., Ellei toisin sanoen aseteta ympäristömuuttujaa nimeltä POSIXLY_CORRECT
. Jos näin on, du
defaults to a block size of 512 bytes.
Joten, miten selvitämme, kumpi on käytössä? Voit tarkistaa jokaisen ympäristömuuttujan selvittääksesi sen, mutta on nopeampi tapa. Verrataan tuloksia sen sijaan tiedostojärjestelmän käyttämään lohkokoon.
löytää lohkon koko tiedostojärjestelmä käyttää, käytämme tune2fs
ohjelma., Voimme sitten käyttää -l
(list superblock) vaihtoehto, putken lähtö kautta grep
, ja sitten tulostaa rivit, jotka sisältävät sanan ”Block.”
tässä esimerkissä, me katso file system ensimmäinen osio ensimmäinen kiintolevy, sda1
, ja meidän täytyy käyttää sudo
:
sudo tune2fs -l /dev/sda1 | grep Block
tiedostojärjestelmän lohkon koko on 4 096 tavua. Jos jaamme sen seurauksena saimme du
(neljä), se näyttää du
default lohkon koko on 1024 tavua., Tiedämme nyt useita tärkeitä asioita.
ensin tiedetään pienin määrä tiedostojärjestelmän kiinteistöjä, jotka voidaan omistaa tiedoston tallentamiseen, on 4 096 tavua. Tämä tarkoittaa jopa meidän pieni, kaksi tavua Tiedosto Vie 4 KB kiintolevytilaa.
toinen asia pitää mielessä on, sovelluksia omistettu raportointia kiintolevyn ja tiedostojärjestelmän tilastoja, kuten du
, ls
ja tune2fs
, voi olla eri käsitykset siitä, mitä ”block” tarkoittaa., tune2fs
sovelluksen raportteja totta tiedosto system block koot, kun ls
ja du
voidaan konfiguroida tai pakko käyttää muita lohkon kokoja. Näiden lohkokokokokojen ei ole tarkoitus liittyä tiedostojärjestelmän lohkokoon; ne ovat vain ”palasia”, joita komennot käyttävät ulostulossaan.
Lopulta, muut kuin käyttämällä eri lohkon kokoja, vastaa du
ja tune2fs
välittää sama merkitys., tune2fs
– tulos oli yhden korttelin 4096 tavua, ja du
– tulos oli neljän korttelin kuitenkin 1024 tavua.
Käyttämällä du
ilman komentorivin parametrit tai asetukset, du
luetellaan yhteensä levytilaa nykyisen hakemiston ja kaikki alihakemistot käytössä.
katsotaanpa katsomaan esimerkki:
du
koko on raportoitu default lohkon koko kuitenkin 1024 tavua per lohko. Koko alihakemistopuu on läpikulkumatkalla.,
Käyttämällä du Eri Hakemistoon
Jos haluat du
raportoimaan eri hakemistoon kuin nykyinen yksi, voit siirtää polku hakemistoon komentorivillä:
du ~/.cach/evolution/
Käyttämällä du Erityinen Tiedosto
Jos haluat du
raportoida tietyn tiedoston, kulkea polku, että tiedosto komentoriviltä., Voit myös siirtää shell-malli valitse joukko tiedostoja, kuten *.txt
:
du ~/.bash_aliases
Raportointi Tiedostoja, Hakemistoja
on du
raportti tiedostot nykyisestä hakemistosta ja sen alihakemistoista, käyttää -a
(kaikki tiedostot) – vaihtoehto:
du -a
kunkin hakemiston, koko kunkin tiedoston on raportoitu, sekä koko kunkin hakemiston.,
Rajoittaa Hakemisto Puu Syvyys
Voit kertoa du
luettelo hakemisto puu tiettyyn syvyyteen. Voit tehdä sen käyttämällä -d
(suurin syvyys) – vaihtoehtoa ja antaa parametrina syvyysarvon. Huomaa, että kaikki alihakemistot skannataan ja käytetään laskemaan ilmoitetut kokonaismäärät, mutta niitä kaikkia ei ole lueteltu. Voit asettaa enintään hakemistoon syvyys yhdellä tasolla, käytä tätä komentoa:
du -d 1
lähtö luettelot koko yhteensä että alihakemistoon nykyisen hakemiston ja myös tarjoaa yhteensä jokainen.,
listan hakemistoja yksi taso syvemmälle, käytä tätä komentoa:
du -d 2
Asetukset Lohkon Koko
Voit käyttää block
mahdollisuus asettaa lohkon koko du
nykyisen työvaiheen.,d sopivin lohkon koon mukaan levytilaa käyttää hakemistoja ja tiedostoja, käytä -h
(ihmisen luettavissa) vaihtoehto:
du -h
nähdä näennäinen koko tiedoston pikemminkin kuin määrä kiintolevy tilaa käytetään tallentaa tiedoston, käytä --apparent-size
vaihtoehto:
du --apparent-size
Voit yhdistää tämän -a
(kaikki) – vaihtoehto nähdä näennäinen koko kunkin tiedoston:
du --apparent-size -a
Jokainen tiedosto on luettelossa, yhdessä sen näennäinen koko.,
– Näyttää Vain Yhteensä
Jos haluat du
ilmoittaa vain yhteensä hakemistoon, käytä -s
(yhteenveto) – vaihtoehto., Voit myös yhdistää tämän kanssa muita vaihtoehtoja, kuten -h
(ihmisen luettavissa) vaihtoehto:
du -h -s
Tässä, meidän tulee käyttää sitä --apparent-size
vaihtoehto:
du --apparent-size -s
Näyttää Muuttaminen Kertaa
jos Haluat nähdä, luoda tai viimeisen muutoksen aika ja päivämäärä, käytä --time
vaihtoehto:
du --time -d 2
Outoja Tuloksia?,
Jos näet outoja tulokset du
, varsinkin kun cross-reference koot lähdön muita komentoja, se on yleensä, koska eri lohkon koot, joka on eri komentoja voidaan asettaa tai niitä, joihin he oletuksena. Se voi johtua myös todellisten tiedostokokojen ja niiden tallentamiseen tarvittavan levytilan eroista.
Jos sinun täytyy sovittaa lähtö muita komentoja, kokeilla --block
vaihtoehto du
.,
Dave McKay ensin käyttää tietokoneita, kun rei ’ itetty paperi nauha oli muodissa, ja hän on ollut ohjelmointi lähtien. Oltuaan yli 30 vuotta IT-alalla hän on nyt päätoiminen teknologiatoimittaja. Uransa aikana hän on työskennellyt freelance-ohjelmoija, johtaja kansainvälinen ohjelmisto development team, IT-palvelujen projektipäällikkö, ja, viime aikoina, kuten tietosuojavastaavan. Dave on Linux-evankelista ja avoimen lähdekoodin puolestapuhuja.Lue Koko Bio ”