- Dave McKay
@TheGurkha
- 19 decembrie 2019, 8:00 EDT
atunci Când utilizați Linux du
comandă, veți obține atât reale de utilizare disc și adevărata mărime a unui fișier sau director. Vom explica de ce aceste valori nu sunt aceleași.
utilizarea efectivă a discului și dimensiunea reală
dimensiunea unui fișier și spațiul pe care îl ocupă pe hard disk sunt rareori aceleași., Spațiul pe disc este alocat în blocuri. Dacă un fișier este mai mic decât un bloc, un întreg bloc este încă alocat acestuia, deoarece sistemul de fișiere nu are o unitate mai mică de bunuri imobiliare de utilizat.
cu excepția cazului în care dimensiunea unui fișier este un multiplu exact de blocuri, spațiul pe care îl folosește pe hard disk trebuie să fie întotdeauna rotunjit la următorul bloc întreg. De exemplu, dacă un fișier este mai mare de două blocuri, dar mai mic de trei, este nevoie de încă trei blocuri de spațiu pentru a-l stoca.
două măsurători sunt utilizate în raport cu Dimensiunea fișierului., Primul este dimensiunea reală a fișierului, care este numărul de octeți de conținut care alcătuiesc fișierul. Al doilea este dimensiunea efectivă a fișierului de pe hard disk. Acesta este numărul de blocuri de sistem de fișiere necesare pentru a stoca acel fișier.
un exemplu
să ne uităm la un exemplu simplu., Vom redirecționa un singur caracter într-un fișier pentru a crea un mic fișier:
echo "1" > geek.txt
Acum, vom folosi mult timp format listă, ls
, să se uite la lungimea de fișier:
ls -l geek.txt
lungimea este valoarea numerică care urmează dave dave
intrări, care este de doi octeți. De ce sunt doi octeți când am trimis un singur caracter în fișier? Să aruncăm o privire la ceea ce se întâmplă în interiorul fișierului.,
Vom folosi hexdump
comandă, care ne va da exact numărul de octet și ne permite să „vedem” caractere non-imprimare ca valori hexazecimale. De asemenea, vom folosi -C
(canonice) opțiunea de a forța ieșirea pentru a arăta valori hexazecimale în corpul de ieșire, precum și caracter alfanumeric echivalente:
hexdump -C geek.txt
rezultatul ne arată că, începând de la offset 00000000 în dosar, există un octet care conține o valoare hexazecimală de 31 de ani, și unul care conține o valoare hexazecimală a 0A., Porțiunea din dreapta a ieșirii descrie aceste valori ca caractere alfanumerice, ori de câte ori este posibil.valoarea hexazecimală a lui 31 este utilizată pentru a reprezenta cifra unu. Valoarea hexazecimală a 0A este utilizată pentru a reprezenta caracterul de alimentare a liniei, care nu poate fi afișat ca un caracter alfanumeric, deci este afișat ca o perioadă (.) în schimb. Caracterul liniei de alimentare este adăugat de echo
. În mod implicit, echo
începe o nouă linie după ce afișează textul pe care trebuie să-l scrie în fereastra terminalului.,
care se potrivește cu ieșirea din ls
și este de acord cu lungimea fișierului de doi octeți.
LEGATE de: Modul de Utilizare a Comanda ls pentru a Lista Fișierele și Directoarele de pe Linux
Acum, vom folosi du
comandă să se uite la dimensiunea fișierului:
du geek.txt
Se spune că dimensiunea este de patru, dar patru de ce?
există blocuri și apoi există blocuri
cânddu
raportează dimensiunile fișierelor în blocuri, dimensiunea pe care o folosește depinde de mai mulți factori., Puteți specifica dimensiunea blocului pe care ar trebui să o utilizeze pe linia de comandă. Dacă nu forțați du
să utilizeze o anumită dimensiune a blocului, urmează un set de reguli pentru a decide pe care să o utilizați.
în Primul rând, se verifică următoarele variabile de mediu:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- BLOCKSIZE
Dacă oricare dintre acestea există, dimensiunea blocului este stabilit, și du
stații de verificare. Dacă niciunul nu este setat, du
implicit la o dimensiune a blocului de 1,024 octeți., Cu excepția cazului în care este setată o variabilă de mediu numită POSIXLY_CORRECT
. Dacă acesta este cazul, du
implicit la o dimensiune a blocului de 512 octeți.deci, cum aflăm care este în uz? Puteți verifica fiecare variabilă de mediu pentru a o rezolva, dar există o cale mai rapidă. Să comparăm rezultatele cu dimensiunea blocului pe care sistemul de fișiere îl folosește în schimb.pentru a descoperi dimensiunea blocului utilizat de sistemul de fișiere, vom folosi programul tune2fs
., Apoi, vom folosi -l
(lista superblock) opțiune, conducta de ieșire prin grep
, și apoi imprima liniile care conțin cuvântul „Bloc.”
În acest exemplu, vom uita-te la sistemul de fișiere de pe prima partitie de pe primul hard disk, sda1
, iar noi va trebui să utilizați sudo
:
sudo tune2fs -l /dev/sda1 | grep Block
sistemul De fișiere dimensiunea blocului este de 4096 de octeți. Dacă vom împărți că, prin urmare am primit de la du
(patru), se arată du
implicit dimensiunea blocului este de 1024 de octeți., Acum știm câteva lucruri importante.în primul rând, știm că cea mai mică cantitate de sistem de fișiere imobiliare care poate fi dedicată stocării unui fișier este de 4.096 octeți. Aceasta înseamnă că chiar și fișierul nostru mic, de doi octeți, ocupă 4 KB de spațiu pe hard disk.
Al doilea lucru de a păstra în minte este de aplicații dedicate pentru raportarea pe hard disk și sistemul de fișiere statistici, cum ar fi du
, ls
și tune2fs
, pot avea diferite noțiuni de ce „bloc” înseamnă., tune2fs
rapoarte de aplicare adevărat sistem de fișiere de dimensiuni de bloc, în timp ce ls
și du
poate fi configurat sau obligați să utilizeze alte dimensiuni bloc. Aceste dimensiuni de bloc nu sunt destinate să se refere la dimensiunea blocului sistemului de fișiere; sunt doar „bucăți” pe care aceste comenzi le folosesc în ieșirea lor.
în cele din Urmă, altele decât folosind diferite dimensiuni de bloc, răspunsurile la du
și tune2fs
transmită aceeași semnificație., tune2fs
rezultatul a fost un bloc de 4096 bytes, iar du
rezultatul a fost de patru blocuri de 1024 de octeți.
folosind du
fără parametri sau opțiuni de linie de comandă, du
listează spațiul total pe disc pe care îl utilizează directorul curent și toate subdirectoarele.
Să aruncăm o privire la un exemplu:
du
dimensiunea este raportată în dimensiunea implicită a blocului de 1.024 octeți pe bloc. Întregul arbore subdirector este traversat.,
Utilizarea du pe-un Director Diferit
Dacă doriți du
la raport pe un alt director decât cel actual, puteți trece calea către directorul în linia de comandă:
du ~/.cach/evolution/
Utilizarea du pe un Anumit Fișier
Dacă doriți du
să prezinte un raport privind un anumit fișier, trece calea către acel fișier în linia de comandă., Puteți trece, de asemenea, un model shell pentru a o selecta un grup de fișiere, cum ar fi *.txt
:
du ~/.bash_aliases
de Raportare pe Fișiere în Directoare
Pentru a avea du
raport cu privire la fișierele din directorul curent si subdirectoarele, utilizați -a
(toate fișierele) opțiune:
du -a
Pentru fiecare director, dimensiunea fiecărui fișier este raportat, precum și un total pentru fiecare director.,
limitarea adâncimii arborelui de directoare
puteți spune du
pentru a lista arborele de directoare la o anumită adâncime. Pentru a face acest lucru, utilizați opțiunea -d
(adâncime maximă) și furnizați o valoare de adâncime ca parametru. Rețineți că toate subdirectoarele sunt scanate și utilizate pentru a calcula totalurile raportate, dar nu toate sunt listate. Pentru a seta o adâncime maximă a directorului de un nivel, utilizați această comandă:
du -d 1
ieșirea listează dimensiunea totală a acelui subdirector în directorul curent și oferă, de asemenea, un total pentru fiecare.,pentru a lista directoarele cu un nivel mai profund, utilizați această comandă:
du -d 2
Setarea dimensiunii blocului
puteți utiliza opțiunea block
pentru operația curentă.,d în cele mai adecvate bloc de dimensiune în funcție de spațiul de pe disc utilizat de directoare și fișiere, utilizați -h
(lecturat) opțiune:
du -h
Pentru a vedea dimensiunea aparentă de fișier, mai degrabă decât cantitatea de spațiu pe hard disk utilizat pentru a stoca fișiere, utilizați --apparent-size
opțiune:
du --apparent-size
puteți combina acest lucru cu -a
(toate) opțiunea de a vedea dimensiunea aparentă a fiecărui fișier:
du --apparent-size -a
Fiecare fișier este afișat, împreună cu mărimea aparentă.,dacă doriți ca du
să raportați doar totalul pentru director, utilizați opțiunea -s
(rezumați)., De asemenea, puteți combina acest lucru cu alte opțiuni, cum ar fi -h
(lecturat) opțiune:
du -h -s
Aici, ne vom folosi de ea cu --apparent-size
opțiune:
du --apparent-size -s
Afișarea Ori Modificare
Pentru a vedea crearea sau ultimei modificări data și ora, utilizați --time
opțiune:
du --time -d 2
Rezultate Ciudate?,
Dacă vedeți rezultate ciudate din du
, mai ales atunci când te referi la dimensiuni, la ieșirea de la alte comenzi, este de obicei din cauza la diferite dimensiuni de bloc în care diferite comenzi poate fi setat sau cei care au implicit. De asemenea, s-ar putea datora diferențelor dintre dimensiunile reale ale fișierelor și spațiul pe disc necesar pentru a le stoca.
dacă trebuie să potriviți ieșirea altor comenzi, experimentați cu opțiunea --block
din du
.,Dave McKay Dave McKay a folosit pentru prima dată calculatoarele când banda de hârtie perforată era în vogă și de atunci programează. După peste 30 de ani în industria IT, acum este jurnalist tehnologic cu normă întreagă. În timpul carierei sale, a lucrat ca programator independent, manager al unei echipe internaționale de dezvoltare de software, manager de proiect pentru servicii IT și, cel mai recent, ca responsabil cu protecția datelor. Dave este un evanghelist Linux și avocat open source.Citeste tot Bio ”