- Dave McKay
@TheGurkha
- 19. prosince 2019, 8:00 EDT
Pokud používáte Linux du
příkaz, můžete získat jak aktuální využití disku a velikost souboru nebo adresáře. Vysvětlíme, proč tyto hodnoty nejsou stejné.
skutečné využití disku a skutečná velikost
Velikost souboru a místo, které zabírá na pevném disku, jsou zřídka stejné., Místo na disku je přiděleno v blocích. Pokud je soubor menší než blok, je mu stále přidělen celý blok, protože souborový systém nemá k dispozici menší jednotku nemovitostí.
Pokud Velikost souboru není přesným násobkem bloků, musí být místo, které používá na pevném disku, vždy zaokrouhleno nahoru na další celý blok. Například, pokud je soubor větší než dva bloky, ale menší než tři, stále trvá tři bloky místa pro jeho uložení.
dvě měření se používají ve vztahu k velikosti souboru., První je skutečná velikost souboru, což je počet bajtů obsahu, které tvoří soubor. Druhým je efektivní Velikost souboru na pevném disku. Toto je počet bloků souborového systému potřebných k uložení tohoto souboru.
příklad
podívejme se na jednoduchý příklad., Budeme přesměrování jednoho znaku do souboru vytvořit malý soubor:
echo "1" > geek.txt
Nyní, použijeme dlouhý formát výpisu, ls
, podívat se na délka souboru:
ls -l geek.txt
délka je číselná hodnota, která navazuje na dave dave
položky, které je dva bajty. Proč jsou to dva bajty, když jsme do souboru poslali pouze jeden znak? Pojďme se podívat na to, co se děje uvnitř souboru.,
použijeme hexdump
příkaz, který nám dá přesný počet bajtů, a to nám umožní „vidět“ netisknutelných znaků jako hexadecimální hodnoty. Budeme také použít -C
(kanonické) možnost vynutit výstupní zobrazit hexadecimální hodnoty v těle výstup, stejně jako jejich alfanumerický znak ekvivalenty:
hexdump -C geek.txt
výstup nám ukazuje, že, začátek v 00000000 posun v souboru, tam je byte, který obsahuje hexadecimální hodnotu 31, a ten, který obsahuje šestnáctkovou hodnotu 0A., Pravá část výstupu zobrazuje tyto hodnoty jako alfanumerické znaky, kdykoli je to možné.
hexadecimální hodnota 31 se používá k reprezentaci číslice. Hexadecimální hodnota 0A se používá k reprezentaci řádku Feed znak, který nemůže být zobrazen jako alfanumerický znak, takže je zobrazen jako období (.) místo. Řádek Feed znak se přidá echo
. Ve výchozím nastavení echo
spustí nový řádek poté, co zobrazí text, který potřebuje zapsat do okna terminálu.,
to odpovídá výstupu z ls
a souhlasí s délkou souboru dvou bajtů.
SOUVISEJÍCÍ: Jak Použít Příkazu ls vypsat Soubory a Adresáře na Linuxu
Nyní, budeme používat du
příkaz se podívat na velikost souboru:
du geek.txt
velikost je čtyři, ale čtyři, co?
existují bloky a pak jsou bloky
kdyždu
hlásí velikosti souborů v blocích, velikost, kterou používá, závisí na několika faktorech., Na příkazovém řádku můžete určit, jakou velikost bloku má použít. Pokud nevynucujete du
k použití určité velikosti bloku, je třeba rozhodnout, který z nich použije.
za Prvé, kontroluje následující proměnné prostředí:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- BLOCKSIZE
Pokud žádné z těchto existují, je velikost bloku nastavena, a du
zastaví kontrola. Pokud žádné nejsou nastaveny, du
výchozí hodnota je velikost bloku 1,024 bajtů., Pokud tedy není nastavena proměnná prostředí s názvem POSIXLY_CORRECT
. Pokud tomu tak je, du
výchozí hodnota na velikost bloku 512 bajtů.
Jak tedy zjistíme, který z nich se používá? Můžete zkontrolovat každou proměnnou prostředí, abyste ji vyřešili, ale existuje rychlejší způsob. Porovnejme výsledky s velikostí bloku, kterou systém souborů používá.
Chcete-li zjistit velikost bloku, kterou souborový systém používá, použijeme programtune2fs
., Budeme pak použijte -l
(seznamu superbloku) možnost, potrubí výstup do grep
, a pak vytisknout řádky, které obsahují slovo „Blok.“
V tomto příkladu se podíváme na souborový systém na první oddíl prvního pevného disku, sda1
, a budeme muset použít sudo
:
sudo tune2fs -l /dev/sda1 | grep Block
souborový systém velikost bloku je 4096 bajtů. Pokud to vydělíme výsledkem, který jsme získali z du
(čtyři), zobrazí du
výchozí velikost bloku je 1,024 bajtů., Nyní víme několik důležitých věcí.
nejprve víme, že nejmenší množství nemovitostí souborového systému, které lze věnovat ukládání souboru, je 4,096 bajtů. To znamená, že i náš malý, dvoubajtový soubor zabírá 4 KB místa na pevném disku.
druhá věc, kterou musíte mít na paměti, je aplikace věnovaná zpráv na pevný disk a souborový systém statistiky, jako je du
ls
tune2fs
, mohou mít různé představy o tom, co „blokovat“ znamená., tune2fs
aplikace hlásí, pravda souborový systém velikost bloku, zatímco ls
du
může být nakonfigurován tak, nebo je nucen používat jiné velikosti bloku. Tyto velikosti bloků nejsou určeny k tomu, aby se vztahovaly k velikosti bloku souborového systému; jsou to jen“ kusy“, které tyto příkazy používají ve svém výstupu.
konečně, kromě použití různých velikostí bloků, odpovědi zdu
atune2fs
vyjadřují stejný význam., tune2fs
výsledek byl jeden blok 4,096 bajtů adu
výsledek byl čtyři bloky 1,024 bajtů.
Použití du
S žádné parametry příkazového řádku, nebo možnosti, du
uvádí celkem disku, aktuální adresář a všechny podadresáře, které používáte.
podívejme se na příklad:
du
reklama
velikost je hlášena ve výchozí velikosti bloku 1,024 bajtů na blok. Celý podadresář je protažen.,
Použití du na Jiný Adresář
Pokud chcete du
zpráva o jiného adresáře, než je aktuální, si můžete projít cestu do adresáře na příkazovém řádku:
du ~/.cach/evolution/
Použití du na Konkrétní Soubor
Pokud chcete du
nahlásit na konkrétní soubor, projít cestu k tomu souboru na příkazovém řádku., Můžete také projít shell vzor k vyberte skupina souborů, jako je *.txt
:
du ~/.bash_aliases
podávání Zpráv o Soubory v Adresářích
du
zpráva o soubory v aktuálním adresáři a podadresářích pomocí -a
(všechny soubory) možnost:
du -a
Pro každý adresář, velikost každého souboru je oznámeno, stejně jako celkem pro každý adresář.,
omezení hloubky adresářového stromu
du
seznam adresářového stromu do určité hloubky. K tomu použijte volbu -d
(max depth) a jako parametr zadejte hodnotu hloubky. Všimněte si, že všechny podadresáře jsou skenovány a použity k výpočtu hlášených součtů, ale nejsou všechny uvedeny. Nastavit maximální adresář hloubku jednu úroveň, použijte tento příkaz:
du -d 1
výstup vypíše celkovou velikost tohoto podadresáře v aktuálním adresáři a také poskytuje celkem pro každou z nich.,
seznam adresáře o jednu úroveň hlouběji, použijte tento příkaz:
du -d 2
Nastavení Velikosti Bloku
můžete použít block
možnost nastavit velikost bloku na du
pro aktuální operaci.,d v nejvhodnější velikost bloku v závislosti na disku používané adresáře a soubory, použijte -h
(human-readable) možnosti:
du -h
vidět zdánlivá velikost souboru, spíše než množství místa na disku používané pro ukládání souboru, použijte --apparent-size
možnost:
du --apparent-size
můžete kombinovat s -a
(všechny), možnost vidět zdánlivá velikost každého souboru:
du --apparent-size -a
Každý soubor je uveden spolu s jeho zdánlivá velikost.,
zobrazení pouze součtů
Chcete-lidu
nahlásit pouze součet adresáře, použijte volbu-s
(shrnout)., Můžete také kombinovat s dalšími možnostmi, jako je například -h
(human-readable) možnosti:
du -h -s
Tady, budeme používat --apparent-size
možnost:
du --apparent-size -s
Zobrazuje Časy Modifikace
vytvoření nebo poslední modifikace datum a čas, použijte --time
možnosti:
du --time -d 2
Podivné Výsledky?,
Pokud vidíte podivné výsledky z du
, a to zejména při cross-referenční velikosti pro výstup z jiných příkazů, je to obvykle kvůli různé velikosti bloku na různých příkazů, které lze nastavit, nebo ty, na které se výchozí. Mohlo by to být také kvůli rozdílům mezi skutečnými velikostmi souborů a místem na disku potřebným k jejich uložení.
Pokud potřebujete odpovídat výstupu jiných příkazů, experimentujte s volbou --block
v du
.,
Dave McKay poprvé použity počítače, když děrné děrné pásky bylo v módě, a on byl programovací od té doby. Po více než 30 letech v IT průmyslu je nyní technologickým novinářem na plný úvazek. Během své kariéry pracoval jako programátor na volné noze, manažer mezinárodní tým pro vývoj softwaru, IT služby, project manager, a, nejvíce nedávno, jako inspektora Ochrany Údajů. Dave je Linux evangelista a open source advokát.Přečtěte si celý Bio “