Du (použití disku) je příkaz používaný v Linuxu ke kontrole velikosti adresáře včetně jeho dalšího obsahu a také velikosti jednotlivých souborů.
Když soubory a adresáře začaly spotřebovávat velké množství místa na vašem pevném disku, pak du je nejlepším příkazem, který určí, které adresáře nebo soubory to způsobují.
V tomto tutoriálu se naučíme, jak používat příkaz du v Linuxu ke kontrole využití disku (souborů nebo adresářů).
Příkaz Du a syntaxe
Následující řádek ukazuje syntaxi příkazu du:
du [options] [file or directory name]
Standardně bez jakýchkoliv voleb zobrazuje využití disku daného souboru nebo adresáře a pro každý z podadresářů v bajtech. Pokud není uveden žádný název souboru nebo adresáře, pak du commad zobrazí využití disku aktuálního pracovního adresáře.
# du /boot
2508 /boot/grub2/fonts
3068 /boot/grub2/i386-pc
5592 /boot/grub2
4 /boot/efi/EFI/centos
8 /boot/efi/EFI
12 /boot/efi
16 /boot/loader/entries
20 /boot/loader
152440 /boot
Příkaz Du s -a
volba vypíše využití disku všemi soubory v adresáři.
# du -a /boot
7920 /boot/vmlinuz-4.18.0-147.5.1.el8_1.x86_64
3752 /boot/System.map-4.18.0-147.5.1.el8_1.x86_64
4 /boot/grub2/device.map
4 /boot/grub2/grub.cfg
4 /boot/grub2/grubenv
2504 /boot/grub2/fonts/unicode.pf2
2508 /boot/grub2/fonts
8 /boot/grub2/i386-pc/cs5536.mod
4 /boot/grub2/i386-pc/gcry_rsa.mod
8 /boot/grub2/i386-pc/lsacpi.mod
52 /boot/grub2/i386-pc/gcry_camellia.mod
4 /boot/grub2/i386-pc/cpio_be.mod
......
152440 /boot
Můžete vidět, že na konci příkazu vypíše celkovou velikost, kde '152440' je celková velikost (v bajtech) adresáře '/boot'.
Získat celkovou velikost zadaného adresáře
Chcete-li zobrazit celkovou velikost zadaného adresáře, musíte použít volbu -s, ale nebude hlásit podadresáře. Následující příklad ukazuje celkovou velikost adresáře '/boot'.
# du -s /boot
152440 /boot
Celkové využití disku můžete vytisknout z více adresářů následovně:
# du -s /boot /var
152440 /boot
332168 /var
Formát čitelný člověkem
Zatím vidíme, že se velikost disku ukazovala v bajtech, což není pro člověka moc čitelný formát. Abychom mohli tisknout výstup v kilobajtech (K), megabajtech (M) a gigabajtech (G), musíme použít -h
možnost.
# du -h /boot
2.5M /boot/grub2/fonts
3.0M /boot/grub2/i386-pc
5.5M /boot/grub2
4.0K /boot/efi/EFI/centos
8.0K /boot/efi/EFI
12K /boot/efi
16K /boot/loader/entries
20K /boot/loader
149M /boot
--si
volba je jako -h
ale používá mocniny 1000 místo 1024.
# du --si /boot
2.6M /boot/grub2/fonts
3.2M /boot/grub2/i386-pc
5.8M /boot/grub2
4.1k /boot/efi/EFI/centos
8.2k /boot/efi/EFI
13k /boot/efi
17k /boot/loader/entries
21k /boot/loader
157M /boot
Chcete-li získat celkovou velikost zadaného adresáře ve formátu čitelném pro člověka, který je velmi běžně používaný příkaz du, použijte následující příkaz:
# du -sh /boot
149M /boot
Kombinovat celkovou velikost
To je velmi užitečné, když chcete kombinovat celkovou velikost ve více adresářích. Následující příklad du command join (-c
) celková velikost zadaného disku (-s
) adresář '/boot' a '/var' a tisk na poslední řádek ve formátu čitelném pro člověka (-h
):
# du -csh /boot/ /var
149M /boot/
317M /var
466M total
Zobrazit jednotlivé velikosti všech souborů a adresářů
Pomocí zástupných znaků (*) můžeme vytisknout jednotlivé velikosti každého souboru a adresáře a poté zkombinovat celkovou velikost pro tisk na posledním řádku.
# du -csh /boot/*
184K /boot/config-4.18.0-147.5.1.el8_1.x86_64
180K /boot/config-4.18.0-80.7.1.el8_0.x86_64
12K /boot/efi
0 /boot/grub
5.5M /boot/grub2
53M /boot/initramfs-0-rescue-3e729c2d7c094902af0333ce40564ffe.img
23M /boot/initramfs-4.18.0-147.5.1.el8_1.x86_64.img
23M /boot/initramfs-4.18.0-80.7.1.el8_0.x86_64.img
16M /boot/initramfs-4.18.0-80.7.1.el8_0.x86_64kdump.img
20K /boot/loader
3.7M /boot/System.map-4.18.0-147.5.1.el8_1.x86_64
3.6M /boot/System.map-4.18.0-80.7.1.el8_0.x86_64
7.6M /boot/vmlinuz-0-rescue-3e729c2d7c094902af0333ce40564ffe
7.8M /boot/vmlinuz-4.18.0-147.5.1.el8_1.x86_64
7.6M /boot/vmlinuz-4.18.0-80.7.1.el8_0.x86_64
149M total
Příkaz Du s párováním vzorů
Pomocí příkazu du můžete provádět porovnávání vzorů. Následující příkaz ukazuje, jak najít velikost disku všech adresářů začínajících na 'bo'.
# du -sch /bo*
149M /boot
217M /bootstrap
366M total
Použití příkazu du k získání zdánlivé velikosti
--apparent-size
volba vytiskne zdánlivé velikosti (skutečné množství dat v souboru) spíše než využití disku.
# du --apparent-size /boot
2505 /boot/grub2/fonts
2544 /boot/grub2/i386-pc
5057 /boot/grub2
4 /boot/efi/EFI/centos
8 /boot/efi/EFI
12 /boot/efi
6 /boot/loader/entries
10 /boot/loader
151852 /boot
Zkontrolujte velikost adresáře, který obsahuje pevné odkazy
Pomocí -l
nebo --count-links
Při pevném propojení se velikosti započítají mnohokrát. Ve výchozím nastavení se pevné odkazy nezobrazují.
Například
# ls -li
total 648
755150 -rw-r--r-- 1 root root 4719 Apr 19 00:46 file1
755152 -rw-r--r-- 2 root root 312519 Apr 19 00:47 file2
755152 -rw-r--r-- 2 root root 312519 Apr 19 00:47 file2.hard
755153 lrwxrwxrwx 1 root root 19 Apr 19 00:57 file2.soft -> /etc/sysconfig/init
Zde je soubor2.hard pevný odkaz na soubor2. Nyní si všimněte výstupu s -l
a bez něj.
# du -ah
4.0K ./file2.soft
316K ./file2
12K ./file1
340K .
# du -ahl
4.0K ./file2.soft
316K ./file2
12K ./file1
316K ./file2.hard
656K .
Výchozí chování pro symbolické odkazy není dereferencovat je. Pro dereferencování symbolických odkazů -L
nebo --dereference
je použita možnost
# du -ahL
8.0K ./file2.soft
316K ./file2
12K ./file1
344K .
(Všimněte si, že velikost souboru2.soft se nyní změnila)
-P
nebo --no-dereference
volba nedereferencuje tyto symbolické odkazy (což je výchozí chování, jak je uvedeno výše).
Zobrazení využití disku v podadresářích na úrovni 'N'
Tato volba dává příkazu du pokyn, aby vypsal podadresáře a jejich velikost na naši požadovanou úroveň hloubky.
Například níže uvedený příklad uvádí adresáře do první vrstvy pouze v aktuálním stromu adresářů a jejich velikost. I zde se uvádí rovnoměrná celková spotřeba prostoru. V případě, že nastavíme --max-depth=
na nulu, pak příkaz du nevypíše žádné podadresáře a bude hlásit pouze velikost vybraného adresáře.
# du --max-depth=1 -h /boot/
7.1M /boot/grub
110M /boot/
Příkaz Du k vyloučení souborů
Příkaz Du může vyloučit konkrétní adresář pomocí --exclude
volba. V následujícím příkladu jsem vyloučil adresář 'grub2':
# du --exclude=grub2 /boot/
4 /boot/efi/EFI/centos
8 /boot/efi/EFI
12 /boot/efi
16 /boot/loader/entries
20 /boot/loader
146848 /boot/
Níže jsou uvedeny dva příklady, které vám ukáží, jak vyloučit soubory „*.obj“ nebo „*.jpg“.
# du -h –exclude=’*.obj’
# du -h –exclude=’*.jpg’
K vytištění času úpravy použijte příkaz du
Čas úpravy souborů a/nebo adresářů (nebo souborů/adresářů v podadresářích) lze zobrazit pomocí --time
možnost.
# du /boot/ --time
4 2017-03-23 15:03 /boot/grub/locale
2348 2017-03-23 15:03 /boot/grub/fonts
2480 2017-03-23 15:03 /boot/grub/i386-pc
7212 2017-04-05 08:31 /boot/grub
112180 2017-04-05 08:31 /boot/
Používejte du s dalšími příkazy
Příkaz Du může být kombinován s jiným příkazem pomocí potrubí (|). Podívejme se na několik příkladů
Pokud chceme najít 3 top adresáře podle velikosti v aktuálním pracovním adresáři:
# du -skh * | sort -nr | head -3
386M lib
252M share
154M lib64
Zobrazit všechny soubory a adresáře seřazené podle velikosti:
# du -sk * | sort -n
12160 libexec
37552 sbin
58900 bin
70048 src
157456 lib64
257492 share
394504 lib
Závěr
V tomto tutoriálu jsme se naučili používat příkaz du v Linuxu k odhadu využití disku pro soubory a adresáře. Doufám, že se vám čtení líbilo a zanechte prosím své návrhy v sekci komentářů níže.