Hogyan juthat el egy fájl vagy könyvtár mérete Linux

  • Dave McKay

    @TheGurkha

  • December 19, 2019, 8:00am EDT
Fatmawati Achmad Zaenuri/

a Linux du parancs használatakor mind a tényleges lemezhasználatot, mind a fájl vagy könyvtár valódi méretét megkapja. Elmagyarázzuk, miért nem azonosak ezek az értékek.

tényleges Lemezhasználat és valódi méret

egy fájl mérete és a merevlemezen elfoglalt hely ritkán azonos., A lemezterület blokkokban van elosztva. Ha egy fájl kisebb, mint egy blokk, akkor egy teljes blokkot továbbra is hozzárendelnek hozzá, mert a fájlrendszernek nincs kisebb ingatlanegysége.

hacsak egy fájl mérete pontosan több blokk, a merevlemezen használt helyet mindig a következő teljes blokkra kell kerekíteni. Például, ha egy fájl nagyobb, mint két blokk, de kisebb, mint három, még mindig tart három blokk helyet tárolni.

reklám

két mérést használnak a fájl méretéhez viszonyítva., Az első a fájl tényleges mérete, amely a fájlt alkotó tartalom bájtjainak száma. A második a fájl tényleges mérete a merevlemezen. Ez a fájlrendszerblokkok száma, amelyek a fájl tárolásához szükségesek.

példa

nézzünk egy egyszerű példát., Egy karaktert átirányítunk egy fájlba egy kis fájl létrehozásához:

echo "1" > geek.txt

most a hosszú formátumú listát használjuk, ls, hogy megnézzük a fájl hosszát:

ls -l geek.txt

a hossza a

ls -l geek.txt

div id = “9c6e6dbf8e” > bejegyzések, ami két bájt. Miért két bájt, amikor csak egy karaktert küldtünk a fájlba? Nézzük meg, mi történik az aktában.,

hirdetés

ahexdump parancsot fogjuk használni, amely pontos bájtszámot ad nekünk, és lehetővé teszi számunkra, hogy a nem nyomtatási karaktereket hexadecimális értékként “láthassuk”. A -C (kanonikus) opcióval arra kényszerítjük a kimenetet, hogy hexadecimális értékeket jelenítsen meg a kimenet testében, valamint alfanumerikus karakter ekvivalenseiket:

hexdump -C geek.txt

a kimenet azt mutatja, hogy a fájlban 0000000000 eltolással kezdődően van egy bájt, amely egy hexadecimális értéke 31, hexadecimális értéke pedig 0a., A kimenet jobb oldali része ezeket az értékeket alfanumerikus karakterként ábrázolja, ahol csak lehetséges.

a 31-es hexadecimális érték a számjegy ábrázolására szolgál. A 0a hexadecimális értéke a Sorfolyam karakterének ábrázolására szolgál, amelyet nem lehet alfanumerikus karakterként megjeleníteni, tehát periódusként (.) helyett. A sor Feed karakter hozzá echo. Alapértelmezés szerint a echo új sort indít, miután megjeleníti a terminál ablakába írandó szöveget.,

Ez a ls kimenettel egyezik meg, és két bájt fájlhosszával.

kapcsolódó: hogyan használjuk az ls parancsot fájlok és könyvtárak listázására Linuxon

hirdetés

most adu parancsot használjuk a fájlméret megtekintéséhez:

du geek.txt

azt mondja, hogy a méret négy, de mi?

vannak blokkok, majd vannak blokkok

amikor du jelentések fájlméretek blokkokban, az általa használt méret több tényezőtől függ., Megadhatja, hogy melyik blokkméretet kell használni a parancssorban. Ha nem kényszeríti adu – t egy adott blokkméret használatára, akkor egy sor szabályt követ annak eldöntéséhez, hogy melyiket használja.

először a következő környezeti változókat ellenőrzi:

  • DU_BLOCK_SIZE
  • BLOCK_SIZE
  • BLOCKSIZE BLOCKSIZE

ha ezek közül bármelyik létezik, a blokk mérete be van állítva, és du leállítja az ellenőrzést. Ha nincs beállítva, a du alapértelmezés szerint 1,024 bájt blokkméret., Hacsak nincs beállítva egy POSIXLY_CORRECT nevű környezeti változó. Ha ez a helyzet, du alapértelmezés szerint egy blokk mérete 512 bájt.

reklám

szóval, hogyan deríthetjük ki, melyik van használatban? Akkor ellenőrizze az egyes környezeti változó, hogy dolgozzanak ki, de van egy gyorsabb módja. Hasonlítsuk össze az eredményeket a blokk méretével, amelyet a fájlrendszer használ.

a fájlrendszer által használt blokkméret felfedezéséhez a tune2fs programot használjuk., Ezután a -l(list superblock) opciót használjuk, a kimenetet a grep, majd nyomtassa ki a “blokk” szót tartalmazó sorokat.”

ebben a példában megnézzük a fájlrendszert az első merevlemez első partícióján, sda1, és a sudo:

sudo tune2fs -l /dev/sda1 | grep Block

a fájlrendszerblokk mérete 4,096 bájt. Ha ezt a du (négy) eredmény alapján osztjuk meg, akkor a du alapértelmezett blokkméret 1,024 bájt., Most már számos fontos dolgot tudunk.

reklám

először is tudjuk, hogy a fájlrendszer legkisebb ingatlana, amelyet egy fájl tárolására lehet fordítani, 4,096 bájt. Ez azt jelenti, hogy még az apró, két bájtos fájlunk is 4 KB merevlemez-helyet foglal el.

A második dolog, hogy tartsa szem előtt, alkalmazások szentelt jelentés a merevlemez, valamint a fájl rendszer statisztikák, például a du, ls vagy tune2fs, lehet különböző fogalmak, mi az a “blokk” jelent., Atune2fs alkalmazás valódi fájlrendszerblokk méreteket jelent, míg als és adu konfigurálható vagy kényszeríthető más blokkméretek használatára. Ezek a blokkméretek nem a fájlrendszer blokkméretéhez kapcsolódnak; csak” darabok ” azok a parancsok, amelyeket a kimenetükben használnak.

végül a különböző blokkméretek használata mellett a du és a tune2fs válaszok ugyanazt a jelentést közvetítik., A tune2fs eredmény egy 4,096 bájtos blokk volt, a du eredmény pedig négy 1,024 bájtos blokk.

A du

parancssori paraméterek vagy opciók nélkül a du felsorolja az aktuális könyvtár és az összes alkönyvtár által használt teljes lemezterületet.

vessünk egy pillantást egy példára:

du
hirdetés

a méret Az alapértelmezett blokkméret 1,024 bájt / blokk. Az egész alkönyvtárfa áthalad.,

A du egy másik könyvtárban

Ha azt szeretné, hogy a du jelentse az aktuális könyvtárat, akkor átadhatja a parancssor könyvtárának elérési útját:

du ~/.cach/evolution/

segítségével du egy adott fájlban

ha du egy adott fájl jelentéséhez adja át a fájl elérési útját a parancssorban., Azt is át a shell mintát, hogy válasszon ki egy csoportot a fájlokat, mint például a *.txt:

du ~/.bash_aliases

jelentés Fájlok Könyvtárak

, Hogy a du jelentés a fájlokat az aktuális könyvtárban, valamint alkönyvtárak, használja a -a (minden fájl) opció:

du -a
Hirdetés

minden könyvtárban, a méret, minden fájl számolt be, valamint egy teljes, minden könyvtár.,

A könyvtárfa mélységének korlátozása

meg lehet mondani du a könyvtárfa egy bizonyos mélységre történő felsorolásához. Ehhez használja a -d (Max mélység) opciót, és adja meg a mélységértéket paraméterként. Vegye figyelembe, hogy az összes alkönyvtár beolvasásra kerül, és a jelentett összegek kiszámítására szolgál, de nem mindegyik szerepel a listában. Egy szint maximális könyvtármélységének beállításához használja ezt a parancsot:

du -d 1

a kimenet felsorolja az adott alkönyvtár teljes méretét az aktuális könyvtárban, és mindegyikhez egy teljes értéket is biztosít.,

a könyvtárak egy szinttel mélyebb listájához használja ezt a parancsot:

du -d 2

a blokkméret beállítása

használhatja a block opciót a blokkméret beállításához du az aktuális művelethez.,d a legmegfelelőbb blokk méret szerint a által használt lemezterület a könyvtárak, fájlok, használja a -h (olvasható) opció:

du -h

látni, hogy a látszólagos méretét, a fájl inkább, mint amennyi hely a merevlemezen tárolja a fájlt, akkor használja a --apparent-size opció:

du --apparent-size
Hirdetés

lehet ezt összeegyeztetni a -a (minden) opció, hogy a látszólagos méret, minden fájl:

du --apparent-size -a

Minden fájl felsorolt, valamint a látszólagos méretét.,

csak az összes megjelenítése

Ha azt szeretné, hogy adu csak a könyvtár teljes értékét jelentse, használja a -s (összefoglalás) opciót., Akkor is, ha ezt kombináljuk egyéb lehetőségek, mint például a -h (olvasható) opció:

du -h -s

Itt, majd használjuk a --apparent-size opció:

du --apparent-size -s

Megjelenítés Módosítása Alkalommal

látni létrehozásának vagy utolsó módosításának időpontját, használja a --time opció:

du --time -d 2

a Furcsa Eredmények?,

ha furcsa eredményeket lát a du-tól , különösen akkor, ha más parancsok kimenetére keresztezi a referenciaméreteket, általában a különböző blokkméretek miatt, amelyekhez különböző parancsokat lehet beállítani, vagy azok, amelyekre alapértelmezés szerint. Ennek oka lehet a valódi fájlméretek és a tárolásukhoz szükséges lemezterület közötti különbség is.

Ha meg kell egyeznie más parancsok kimenetével, kísérletezzen a --block opcióval a du.,

Dave McKay
Dave McKay először használt számítógépet, amikor a papírszalag divatos volt, és azóta is programozik. Több mint 30 év után az informatikai iparban, most teljes munkaidős technológiai újságíró. Karrierje során szabadúszó programozóként, egy nemzetközi szoftverfejlesztő csapat menedzsereként, informatikai szolgáltatási projektmenedzserként, legutóbb pedig Adatvédelmi tisztviselőként dolgozott. Dave egy Linux evangélista és nyílt forráskódú szószólója.Olvassa el a teljes Bio ”

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük