- Dave McKay
@TheGurkha
- 19 desember 2019, 8:00 am EDT
Når du bruker Linux du
– kommandoen, kan du få både den faktiske disk usage og den virkelige størrelsen på en fil eller en katalog. Vi vil forklare hvorfor disse verdiene er ikke det samme.
Faktiske Disk Usage og Sann Størrelse
størrelsen på en fil, og den plassen det ligger på din harddisk, er sjelden det samme., Diskplass er fordelt i blokker. Hvis en fil er mindre enn et kvartal, en hel blokk er fremdeles allokert til det fordi filsystemet ikke har en mindre enhet av eiendom til bruk.
Hvis en fil størrelse er en eksakt multiplum av blokker, den plass den bruker på harddisken må alltid være avrundet opp til nærmeste hele blokken. For eksempel, hvis en fil som er større enn to kvartaler, men mindre enn tre, er det fortsatt tar tre blokker av plass til å lagre det.
To målinger er brukt i forhold til størrelsen på filen., Den første er den faktiske størrelsen på filen, som er antall byte av innhold som gjør opp filen. Den andre er den effektive størrelsen på filen på harddisken. Dette er antall file system blokkerer nødvendig for å lagre denne filen.
Et Eksempel på
La oss se på et enkelt eksempel., Vi vil omdirigere et enkelt tegn i en fil for å lage en liten fil:
echo "1" > geek.txt
Nå, vil vi bruke lang format liste, ls
, for å se på filen lengde:
ls -l geek.txt
lengden er den numeriske verdien som følger dave dave
oppføringer, som er to byte. Hvorfor er det to byte når vi bare sendt en karakter til en fil? La oss ta en titt på hva som skjer inne i filen.,
Vi vil bruke hexdump
– kommandoen, som vil gi oss en nøyaktig opptelling av byte og tillate oss å «se» ikke-utskrift tegn som heksadesimale verdier. Vi vil også bruke -C
(kanonisk) muligheten til å tvinge utgang for å vise verdier i kroppen av-utgang, så vel som deres alfanumeriske tegn ekvivalenter:
hexdump -C geek.txt
output viser oss at begynnelsen på offset 00000000 i filen, det er en byte som inneholder en heksadesimal verdi 31., og en som inneholder en heksadesimal verdi av 0A., Den høyre delen av utskriften viser disse verdiene som alfanumeriske tegn, der det er mulig.
Den heksadesimale verdien av 31 brukes til å representere tallet en. Den heksadesimale verdien av 0A brukes til å representere den linjeskift-tegn, som ikke skal vises som et alfanumerisk tegn, slik det er vist som et punktum (.) istedenfor. Den linjeskift-tegn er lagt til av echo
. Som standard echo
begynner på en ny linje etter det viser teksten det er behov for å skrive til terminalvinduet.,
Som stemmer overens med resultatet fra ls
og enig med fil lengde på to byte.
i SLEKT: Hvordan å Bruke ls-Kommandoen for å Liste Filer og Kataloger på Linux
Nå, vil vi bruke du
– kommandoen til å se på fil-størrelse:
du geek.txt
Det sier størrelse er fire, men fire av hva?
Det Er Blokker, og Så Er Det Kvartaler
Ved du
rapporter-fil-størrelser i kvartaler, størrelsen det bruker, avhenger av flere faktorer., Du kan angi hvilken blokk-størrelse bør bruke på kommandolinjen. Hvis du ikke tvinge du
for å bruke en bestemt blokk-størrelse, det følger et sett med regler for å bestemme hvilken du skal bruke.
for det Første, det kontrollerer følgende miljøvariabler:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- BLOCKSIZE
Hvis noen av disse eksisterer, blokk-størrelse er satt, og du
stopp kontroll. Hvis dette ikke er angitt, du
standarder til en blokk størrelse på, men 1024 bytes., Med mindre, det er, er en miljøvariabel kalt POSIXLY_CORRECT
er satt. Hvis det er tilfelle, du
standarder til en blokk størrelse på 512 byte.
Så, hvordan finner vi ut hvem som er i bruk? Du kan sjekke hvert miljø-variabelen til å finne ut av det, men det er en raskere måte. La oss sammenligne resultatene til blokk-størrelse filsystemet bruker i stedet.
for Å oppdage blokk-størrelse filsystemet bruker, vil vi bruke tune2fs
program., Deretter vil vi bruke -l
(liste superblock) – alternativet, rør den ut gjennom grep
, og deretter skrive ut linjene som inneholder ordet «Blokk.»
I dette eksempelet skal vi se på filsystemet på den første partisjonen på den første harddisken, sda1
, og vi trenger å bruke sudo
:
sudo tune2fs -l /dev/sda1 | grep Block
Den file system blokk størrelse er 4,096 byte. Hvis vi dele det med det resultatet vi fikk fra du
(fire), det viser du
standard blokk-størrelse er 1024 bytes., Vi vet nå flere viktige ting.
Første, vet vi at den minste mengden av filsystemet eiendomsmegling som kan brukes til å lagre en fil er 4,096 byte. Dette betyr at selv våre små, to-byte-fil er å ta opp 4 KB ledig plass på harddisken.
Den andre tingen å huske på er programmene som er dedikert til rapportering på harddisken og filsystemet statistikk, som for eksempel du
, ls
, og tune2fs
, kan ha forskjellige oppfatninger av hva «blokk» betyr., tune2fs
søknad rapporter sant file system blokk størrelser, mens ls
og du
kan konfigureres eller tvunget til å bruke andre kvartal størrelser. De blokk størrelser er ikke hadde til hensikt å forholde seg til filsystemet blokk-størrelse, de er bare «biter» disse kommandoene bruk i sin produksjon.
til Slutt, annet enn ved hjelp av ulike blokker størrelser, svarene fra du
og tune2fs
formidle den samme betydningen., tune2fs
resultatet ble en blokk av 4,096 byte, og du
resultatet var fire blokker av, men 1024 bytes.
Bruker du
Med ingen kommandolinje parametere eller valg, du
viser total diskplass gjeldende mappe og alle undermapper bruker.
La oss ta en titt på et eksempel:
du
størrelsen er rapportert i standard blokk størrelse på, men 1024 byte per blokk. Hele katalogen treet er krysset.,
Bruker du på en Annen Katalog
Hvis du vil du
for å rapportere på en annen katalog enn den nåværende, kan du sende banen til katalogen på kommandolinjen:
du ~/.cach/evolution/
Bruker du på en Bestemt Fil
Hvis du vil du
for å rapportere på en bestemt fil, passerer banen til den filen på kommandolinjen., Du kan også sende en shell-mønster til en velge en gruppe med filer, for eksempel *.txt
:
du ~/.bash_aliases
Rapportering på Filer i Kataloger
Å ha du
rapport om filene i den gjeldende mappen og undermapper, bruk -a
(alle filer) alternativ:
du -a
For hver katalog, størrelsen av hver fil som er rapportert, samt en sum for hver mappe.,
Begrense Directory Tree Dybde
Du kan fortelle du
for å liste katalog-treet til en viss dybde. For å gjøre dette, bruker du -d
(maks dybde) alternativet og gir en dybde-verdi som parameter. Merk at alle underkatalogene er skannet og brukes til å beregne rapportert totalt, men de er ikke alle på listen. For å sette en maksimal katalog dybden på ett nivå, kan du bruke denne kommandoen:
du -d 1
output viser den samlede størrelsen på at undermappe i den gjeldende katalogen, og gir også en sum for hver og en.,
for Å liste kataloger ett dypere nivå, kan du bruke denne kommandoen:
du -d 2
– Innstillingen Block Size
Du kan bruke block
alternativet for å angi en blokk-størrelse for du
for den aktuelle operasjonen.,d i de mest aktuelle blokk-størrelse i henhold til den diskplass som brukes av kataloger og filer, kan du bruke -h
(lesbar) alternativ:
du -h
for Å se den tilsynelatende størrelsen på filen snarere enn den mengden harddiskplass som brukes til å lagre filen, kan du bruke --apparent-size
alternativ:
du --apparent-size
Du kan kombinere dette med -a
(alle) muligheten til å se den tilsynelatende størrelse av hver fil:
du --apparent-size -a
Hver fil som er listet opp, sammen med sin tilsynelatende størrelse.,
Vise Totaler
Hvis du vil du
for å rapportere kun samlet for katalogen, bruker du -s
(oppsummering) alternativ., Du kan også kombinere dette med andre muligheter, for eksempel -h
(lesbar) alternativ:
du -h -s
Her vil vi bruke den med --apparent-size
alternativ:
du --apparent-size -s
Viser Endring Ganger
for Å se oppretting eller siste endring klokkeslett og dato, bruk --time
valg:
du --time -d 2
Merkelige Resultater?,
Hvis du ser merkelig resultater fra du
, spesielt når du kryss-referanse størrelser til utgang fra andre kommandoer, er det vanligvis på grunn av ulike blokker størrelser som de ulike kommandoer kan bli sett eller de som de standard. Det kan også være på grunn av forskjellene mellom ekte filstørrelser og diskplass som kreves for å lagre dem.
Hvis du trenger å matche resultatet av andre kommandoer, kan du eksperimentere med --block
alternativ i du
.,
Dave McKay først brukt datamaskiner når hullet papir tape som var på moten, og han har vært programmering siden den gang. Etter over 30 år i IT-bransjen, han er nå en full-time-teknologi journalist. I løpet av sin karriere har han jobbet som freelance programmerer, leder av et internasjonalt software utvikling team, en IT-tjenester project manager, og, senest, som en Data Protection Officer. Dave er en Linux-evangelist og åpen kildekode-talsmann.Les Hele Bio «