Paano Makukuha ang Laki ng isang File o Direktoryo sa Linux

Kapag ginamit mo ang Linux du utos, nakukuha mo ang parehong aktwal na paggamit ng disk at ang totoong laki ng isang file o direktoryo. Ipapaliwanag namin kung bakit hindi pareho ang mga halagang ito.

Aktwal na Paggamit ng Disk at Tunay na Laki

Ang laki ng isang file at ang puwang na sinasakop nito sa iyong hard drive ay bihirang pareho. Ang puwang ng disk ay inilalaan sa mga bloke. Kung ang isang file ay mas maliit kaysa sa isang bloke, ang isang buong bloke ay inilalaan pa rin dito dahil ang file system ay walang mas maliit na yunit ng real estate na gagamitin.

Maliban kung ang laki ng isang file ay isang eksaktong maramihang mga bloke, ang puwang na ginagamit nito sa hard drive ay dapat palaging bilugan hanggang sa susunod na buong bloke. Halimbawa, kung ang isang file ay mas malaki sa dalawang bloke ngunit mas maliit sa tatlo, tumatagal pa rin ito ng tatlong mga bloke ng puwang upang maiimbak ito.

Ginagamit ang dalawang sukat na nauugnay sa laki ng file. Ang una ay ang aktwal na laki ng file, na kung saan ay ang bilang ng mga byte ng nilalaman na bumubuo sa file. Ang pangalawa ay ang mabisang sukat ng file sa hard disk. Ito ang bilang ng mga block ng system ng file na kinakailangan upang maiimbak ang file na iyon.

Isang halimbawa

Tingnan natin ang isang simpleng halimbawa. Magre-redirect kami ng isang solong character sa isang file upang lumikha ng isang maliit na file:

echo "1"> geek.txt

Ngayon, gagamitin namin ang mahabang listahan ng format,ls, upang tingnan ang haba ng file:

ls -l geek.txt

Ang haba ay ang numerong halaga na sumusunod sa dave dave mga entry, na kung saan ay dalawang byte. Bakit ito dalawang byte kung iisa lang ang character na ipinadala namin sa file? Tingnan natin kung ano ang nangyayari sa loob ng file.

Gagamitin namin ang hexdump utos, na magbibigay sa amin ng eksaktong bilang ng byte at papayagan kaming "makita" ang mga hindi pag-print na character bilang mga hexadecimal na halaga. Gagamitin din namin ang -C (canonical) na pagpipilian upang pilitin ang output upang ipakita ang mga hexadecimal na halaga sa katawan ng output, pati na rin ang kanilang mga katumbas na alphanumeric character:

hexdump -C geek.txt

Ipinapakita sa amin ng output na, simula sa offset 00000000 sa file, mayroong isang byte na naglalaman ng isang hexadecimal na halaga na 31, at isang isa na naglalaman ng isang hexadecimal na halaga ng 0A. Ang kanang bahagi ng output ay naglalarawan ng mga halagang ito bilang mga alphanumeric character, hangga't maaari.

Ang hexadecimal na halaga ng 31 ay ginagamit upang kumatawan sa isang digit. Ang hexadecimal na halaga ng 0A ay ginagamit upang kumatawan sa character na Line Feed, na hindi maipakita bilang isang alphanumeric character, kaya't ipinakita ito bilang isang panahon (.) Sa halip. Ang character na Line Feed ay idinagdag ni echo . Bilang default,echonagsisimula ng isang bagong linya pagkatapos ipakita ang teksto na kailangan nito upang isulat sa window ng terminal.

Ang taas na iyon ay may output mula sals at sumasang-ayon sa haba ng file ng dalawang byte.

KAUGNAYAN:Paano Magamit ang ls Command sa Listahan ng Mga File at Direktoryo sa Linux

Ngayon, gagamitin namin ang du utos na tingnan ang laki ng file:

du geek.txt

Sinasabi nito na ang sukat ay apat, ngunit apat sa ano?

May Mga Bloke, at Pagkatapos Mayroong Mga Bloke

Kailan du nag-uulat ng mga laki ng file sa mga bloke, ang laki na ginagamit nito ay nakasalalay sa maraming mga kadahilanan. Maaari mong tukuyin kung aling laki ng block ang dapat gamitin nito sa linya ng utos. Kung hindi mo pinipilit du upang magamit ang isang partikular na laki ng block, sumusunod ito sa isang hanay ng mga patakaran upang magpasya kung alin ang gagamitin.

Una, sinusuri nito ang mga sumusunod na variable ng kapaligiran:

  • DU_BLOCK_SIZE
  • BLOCK_SIZE
  • BLOCKSIZE

Kung mayroon man sa mga ito, ang laki ng block ay nakatakda, at du humihinto sa pagsuri. Kung walang itinakda,du mga default sa isang sukat ng pag-block ng 1,024 bytes. Maliban kung, iyon ay, isang variable ng kapaligiran na tinatawag POSIXLY_CORRECT ay nakatakda. Kung iyan ang kaso, du mga default sa isang sukat ng bloke ng 512 bytes.

Kaya, paano natin malalaman kung alin ang ginagamit? Maaari mong suriin ang bawat variable ng kapaligiran upang maisagawa ito, ngunit may isang mas mabilis na paraan. Ihambing natin ang mga resulta sa laki ng block na ginagamit ng file system sa halip.

Upang matuklasan ang laki ng pag-block na ginagamit ng file system, gagamitin namin ang tune2fs programa Gagamitin namin pagkatapos ang -l (Ilista ang superblock) na pagpipilian, i-tubo ang output sa pamamagitan grep, at pagkatapos ay mag-print ng mga linya na naglalaman ng salitang "I-block."

Sa halimbawang ito, titingnan namin ang file system sa unang pagkahati ng unang hard drive, sda1, at kakailanganin naming gamitin sudo:

sudo tune2fs -l / dev / sda1 | grep Block

Ang laki ng block ng system ng file ay 4,096 bytes. Kung hinati natin iyon sa resulta na ating nakuha du (apat), ipinapakita nito angdu ang default na laki ng block ay 1,024 bytes. Alam natin ngayon ang maraming mahahalagang bagay.

Una, alam namin ang pinakamaliit na halaga ng file system real estate na maaaring italaga sa pagtatago ng isang file ay 4,096 bytes. Nangangahulugan ito na kahit na ang aming maliit, dalawang-byte na file ay kumukuha ng 4 KB ng hard drive space.

Ang pangalawang bagay na dapat tandaan ay ang mga application na nakatuon sa pag-uulat sa hard drive at mga istatistika ng file system, tulad ng du, ls, attune2fs, maaaring magkaroon ng iba't ibang mga ideya kung ano ang ibig sabihin ng "block". Ang tune2fs nag-uulat ang application ng mga tunay na laki ng pag-block ng system file, habangls at du maaaring mai-configure o mapilit na gumamit ng iba pang mga laki ng block. Ang mga laki ng pag-block ay hindi inilaan upang maiugnay sa laki ng file system block; "chunks" lang sila ng mga utos na ginagamit sa kanilang output.

Panghuli, maliban sa paggamit ng iba't ibang mga laki ng block, ang mga sagot mula sa du at tune2fs ihatid ang parehong kahulugan. Ang tune2fs ang resulta ay isang bloke ng 4,096 bytes, at ang du ang resulta ay apat na bloke ng 1,024 bytes.

Gamit du

Walang mga parameter ng pagpipilian o pagpipilian ng linya, du Inililista ang kabuuang puwang ng disk na kasalukuyang direktoryo at lahat ng mga subdirectory na ginagamit.

Tingnan natin ang isang halimbawa:

du

Ang laki ay naiulat sa default na laki ng block na 1,024 bytes bawat block. Ang buong puno ng subdirectory ay nadaanan.

Gamit du sa isang Iba't ibang Direktoryo

Kung gusto modu upang mag-ulat sa ibang direktoryo kaysa sa kasalukuyang isa, maaari mong ipasa ang path sa direktoryo sa linya ng utos:

du ~ / .cach / evolution /

Gamit du sa isang Tiyak na File

Kung gusto modu upang mag-ulat sa isang tukoy na file, ipasa ang path sa file na iyon sa linya ng utos. Maaari mo ring ipasa ang isang pattern ng shell sa isang pumili ng isang pangkat ng mga file, tulad ng * .txt:

du ~ / .bash_aliases

Pag-uulat sa Mga File sa Mga Direktoryo

Para magkaroon du iulat sa mga file sa kasalukuyang direktoryo at subdirectory, gamitin ang -a (Lahat ng mga file) na pagpipilian:

du -a

Para sa bawat direktoryo, ang laki ng bawat file ay naiulat, pati na rin ang isang kabuuan para sa bawat direktoryo.

Nililimitahan ang Lalim ng Tree Directory

Masasabi mo du upang ilista ang puno ng direktoryo sa isang tiyak na lalim. Upang magawa ito, gamitin ang -d (max na lalim) na pagpipilian at magbigay ng isang lalim na halaga bilang isang parameter. Tandaan na ang lahat ng mga subdirectory ay na-scan at ginagamit upang makalkula ang mga naiulat na kabuuan, ngunit hindi lahat sila nakalista. Upang magtakda ng isang maximum na lalim ng direktoryo ng isang antas, gamitin ang utos na ito:

du -d 1

Inililista ng output ang kabuuang sukat ng subdirectory na ito sa kasalukuyang direktoryo at nagbibigay din ng isang kabuuan para sa bawat isa.

Upang mailista ang mga direktoryo ng isang antas na mas malalim, gamitin ang utos na ito:

du -d 2

Pagtatakda ng Sukat ng Pag-block

Maaari mong gamitin ang harangan pagpipilian upang magtakda ng isang laki ng block para sa du para sa kasalukuyang operasyon. Upang magamit ang isang laki ng block ng isang byte, gamitin ang sumusunod na utos upang makuha ang eksaktong laki ng mga direktoryo at file:

du --block = 1

Kung nais mong gumamit ng isang sukat ng pag-block ng isang megabyte, maaari mong gamitin ang -m Pagpipilian (megabyte), na kapareho ng --block = 1M:

du -m

Kung nais mo ang mga laki na naiulat sa pinakaangkop na laki ng pag-block ayon sa puwang ng disk na ginamit ng mga direktoryo at file, gamitin ang -h (Nababasa ng tao) na pagpipilian:

du -h

Upang makita ang maliwanag na sukat ng file kaysa sa dami ng puwang ng hard drive na ginamit upang iimbak ang file, gamitin ang -malarehong sukat pagpipilian:

du - magkatawang-laki

Maaari mo itong pagsamahin sa -a (Lahat) na pagpipilian upang makita ang maliwanag na sukat ng bawat file:

du --malarehong sukat -a

Ang bawat file ay nakalista, kasama ang maliwanag na laki nito.

Nagpapakita lamang ng Kabuuan

Kung gusto modu upang iulat lamang ang kabuuan para sa direktoryo, gamitin ang -s (buod) na pagpipilian. Maaari mo ring pagsamahin ito sa iba pang mga pagpipilian, tulad ng -h (Nababasa ng tao) na pagpipilian:

du -h -s

Dito, gagamitin namin ito sa -malarehong sukat pagpipilian:

du - magkatawang-laki-ng

Ipinapakita ang Mga Oras ng Pagbabago

Upang makita ang paglikha o huling oras ng pagbabago at petsa, gamitin ang - oras pagpipilian:

du --time -d 2

Kakaibang Resulta?

Kung nakakakita ka ng mga kakaibang resulta mula sa du , lalo na kapag nag-cross-reference ka ng laki sa output mula sa iba pang mga utos, karaniwang sanhi ito ng iba't ibang laki ng pag-block kung saan maaaring itakda ang iba't ibang mga utos o kung saan sila nag-default. Maaari rin itong maging sanhi ng mga pagkakaiba sa pagitan ng totoong mga laki ng file at puwang sa disk na kinakailangan upang maiimbak ang mga ito.

Kung kailangan mong itugma ang output ng iba pang mga utos, mag-eksperimento sa --block pagpipilian sa du.


$config[zx-auto] not found$config[zx-overlay] not found