Baza wiedzy - Duf, czyli rozbudowane narzędzie do analizy dysków i podmontowanych zasobów dla systemu Linux i FreeBSD

Duf, czyli rozbudowane narzędzie do analizy dysków i podmontowanych zasobów dla systemu Linux i FreeBSD

Duf jest narzędziem, które działa w konsoli i służy do analizy zajętości miejsca na dyskach oraz podmontowanych zasobach. Pozwala zwracać rozbudowane podsumowania oraz exportować dane w formacie json.
Aby zainstalować najnowszą wersję, należy ściągnąć ją z githuba autora. Dla każdego systemu robimy to inaczej:

Debian/Ubuntu:
wget https://github.com/muesli/duf/releases/download/v0.8.1/duf_0.8.1_linux_amd64.deb
apt install ./duf_0.8.1_linux_amd64.deb

FreeBSD:
sh -c 'pkg update && pkg upgrade && pkg install duf'

CentOS:
wget https://github.com/muesli/duf/releases/download/v0.8.1/duf_0.8.1_linux_amd64.rpm
rpm -ivh duf_0.8.1_linux_amd64.rpm

Podstawową komendą, jaką możemy wykonać, jest komenda duf bez żadnych argumentów:
duf
która zwróci ładną tabelkę z danymi zajętości systemu plików na serwerze:
╭───────────────────────────────────────────────────────────────────────────────────────╮
│ 1 local device                                                                        │
├────────────┬───────┬──────┬───────┬───────────────────────────────┬──────┬────────────┤
│ MOUNTED ON │  SIZE │ USED │ AVAIL │              USE%             │ TYPE │ FILESYSTEM │
├────────────┼───────┼──────┼───────┼───────────────────────────────┼──────┼────────────┤
│ /          │ 29.5G │ 3.3G │ 25.0G │ [##..................]  11.0% │ ext4 │ /dev/vda1  │
╰────────────┴───────┴──────┴───────┴───────────────────────────────┴──────┴────────────╯
╭────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 5 special devices                                                                              │
├─────────────┬────────┬────────┬────────┬───────────────────────────────┬──────────┬────────────┤
│ MOUNTED ON  │   SIZE │   USED │  AVAIL │              USE%             │ TYPE     │ FILESYSTEM │
├─────────────┼────────┼────────┼────────┼───────────────────────────────┼──────────┼────────────┤
│ /dev        │   1.4G │     0B │   1.4G │                               │ devtmpfs │ udev       │
│ /dev/shm    │   1.5G │     0B │   1.5G │                               │ tmpfs    │ tmpfs      │
│ /run        │ 298.8M │ 640.0K │ 298.2M │ [....................]   0.2% │ tmpfs    │ tmpfs      │
│ /run/lock   │   5.0M │     0B │   5.0M │                               │ tmpfs    │ tmpfs      │
│ /run/user/0 │ 288.8M │     0B │ 288.8M │                               │ tmpfs    │ tmpfs      │
╰─────────────┴────────┴────────┴────────┴───────────────────────────────┴──────────┴────────────╯

Następnie możemy wykonać komendę duf z parametrem „–all”
duf --all
która pokaże wszystkie dostępne, nieaktywne i pseudo systemy plików na serwerze:
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 3 local devices                                                                                                │
├──────────────────────────────────┬───────┬──────┬───────┬───────────────────────────────┬─────────┬────────────┤
│ MOUNTED ON                       │  SIZE │ USED │ AVAIL │              USE%             │ TYPE    │ FILESYSTEM │
├──────────────────────────────────┼───────┼──────┼───────┼───────────────────────────────┼─────────┼────────────┤
│ /                                │ 29.5G │ 3.3G │ 25.0G │ [##..................]  11.0% │ ext4    │ /dev/vda1  │
│ /var/lib/docker/overlay2/019e129 │ 29.5G │ 3.3G │ 25.0G │ [##..................]  11.0% │ overlay │ overlay    │
│ 7ba8635fff6beb30429635cfce0211d3 │       │      │       │                               │         │            │
│ ec1ec17b5124a9a5249efe817/merged │       │      │       │                               │         │            │
│ /var/lib/docker/overlay2/6c82396 │ 29.5G │ 3.3G │ 25.0G │ [##..................]  11.0% │ overlay │ overlay    │
│ 823ef8df76a57b3cf8b87b786ba22cee │       │      │       │                               │         │            │
│ 5740b411108e4d79fc01566d5/merged │       │      │       │                               │         │            │
╰──────────────────────────────────┴───────┴──────┴───────┴───────────────────────────────┴─────────┴────────────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 22 special devices                                                                                                    │
├────────────────────────────────┬────────┬────────┬────────┬───────────────────────────────┬─────────────┬─────────────┤
│ MOUNTED ON                     │   SIZE │   USED │  AVAIL │              USE%             │ TYPE        │ FILESYSTEM  │
├────────────────────────────────┼────────┼────────┼────────┼───────────────────────────────┼─────────────┼─────────────┤
│ /dev                           │   1.4G │     0B │   1.4G │                               │ devtmpfs    │ udev        │
│ /dev/hugepages                 │     0B │     0B │     0B │                               │ hugetlbfs   │ hugetlbfs   │
│ /dev/mqueue                    │     0B │     0B │     0B │                               │ mqueue      │ mqueue      │
│ /dev/pts                       │     0B │     0B │     0B │                               │ devpts      │ devpts      │
│ /dev/shm                       │   1.5G │     0B │   1.5G │                               │ tmpfs       │ tmpfs       │
│ /proc                          │     0B │     0B │     0B │                               │ proc        │ proc        │
│ /proc/sys/fs/binfmt_misc       │     0B │     0B │     0B │                               │ autofs      │ systemd-1   │
│ /proc/sys/fs/binfmt_misc       │     0B │     0B │     0B │                               │ binfmt_misc │ binfmt_misc │
│ /run                           │ 298.8M │ 640.0K │ 298.2M │ [....................]   0.2% │ tmpfs       │ tmpfs       │
│ /run/docker/netns/70ab70013ff7 │     0B │     0B │     0B │                               │ nsfs        │ nsfs        │
│ /run/docker/netns/8fc663c7dee0 │     0B │     0B │     0B │                               │ nsfs        │ nsfs        │
│ /run/lock                      │   5.0M │     0B │   5.0M │                               │ tmpfs       │ tmpfs       │
│ /run/user/0                    │ 288.8M │     0B │ 288.8M │                               │ tmpfs       │ tmpfs       │
│ /sys                           │     0B │     0B │     0B │                               │ sysfs       │ sysfs       │
│ /sys/fs/bpf                    │     0B │     0B │     0B │                               │ bpf         │ none        │
│ /sys/fs/cgroup                 │     0B │     0B │     0B │                               │ cgroup2     │ cgroup2     │
│ /sys/fs/fuse/connections       │     0B │     0B │     0B │                               │ fusectl     │ fusectl     │
│ /sys/fs/pstore                 │     0B │     0B │     0B │                               │ pstore      │ pstore      │
│ /sys/kernel/config             │     0B │     0B │     0B │                               │ configfs    │ configfs    │
│ /sys/kernel/debug              │     0B │     0B │     0B │                               │ debugfs     │ debugfs     │
│ /sys/kernel/security           │     0B │     0B │     0B │                               │ securityfs  │ securityfs  │
│ /sys/kernel/tracing            │     0B │     0B │     0B │                               │ tracefs     │ tracefs     │
╰────────────────────────────────┴────────┴────────┴────────┴───────────────────────────────┴─────────────┴─────────────╯

Pomocnym parametrem może być też wyświetlenie zajętości inodes systemu plików:
duf --inodes
dzięki czemu uzyskamy informację o zajętości inodes:
╭────────────────────────────────────────────────────────────────────────────────────────────╮
│ 1 local device                                                                             │
├────────────┬─────────┬───────┬─────────┬───────────────────────────────┬──────┬────────────┤
│ MOUNTED ON │  INODES │ IUSED │  IAVAIL │             IUSE%             │ TYPE │ FILESYSTEM │
├────────────┼─────────┼───────┼─────────┼───────────────────────────────┼──────┼────────────┤
│ /          │ 1966080 │ 59515 │ 1906565 │ [....................]   3.0% │ ext4 │ /dev/vda1  │
╰────────────┴─────────┴───────┴─────────┴───────────────────────────────┴──────┴────────────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────╮
│ 5 special devices                                                                             │
├─────────────┬────────┬───────┬────────┬───────────────────────────────┬──────────┬────────────┤
│ MOUNTED ON  │ INODES │ IUSED │ IAVAIL │             IUSE%             │ TYPE     │ FILESYSTEM │
├─────────────┼────────┼───────┼────────┼───────────────────────────────┼──────────┼────────────┤
│ /dev        │ 378249 │   318 │ 377931 │ [....................]   0.1% │ devtmpfs │ udev       │
│ /dev/shm    │ 382447 │     1 │ 382446 │ [....................]   0.0% │ tmpfs    │ tmpfs      │
│ /run        │ 382447 │   515 │ 381932 │ [....................]   0.1% │ tmpfs    │ tmpfs      │
│ /run/lock   │ 382447 │     2 │ 382445 │ [....................]   0.0% │ tmpfs    │ tmpfs      │
│ /run/user/0 │  73929 │    21 │  73908 │ [....................]   0.0% │ tmpfs    │ tmpfs      │
╰─────────────┴────────┴───────┴────────┴───────────────────────────────┴──────────┴────────────╯

Ostatnim przydatnym parametrem jest parametr zwracająca wynik w formacie json, który łatwo jest zaimportować w kodzie lub innym programie:
duf --json
parametr json można dopisać do wszystkich innych parametrów, spowoduje to wyświetlnie wyniku w formacie json.

Do komendy można dodać ścieżkę do katalogu systemowego lub zamontowanego zasobu, dzięki czemu komenda zwróci tylko ten zasób:
duf /home
zwróci wynik tylko z danym zasobem:
╭───────────────────────────────────────────────────────────────────────────────────────╮
│ 1 local device                                                                        │
├────────────┬───────┬──────┬───────┬───────────────────────────────┬──────┬────────────┤
│ MOUNTED ON │  SIZE │ USED │ AVAIL │              USE%             │ TYPE │ FILESYSTEM │
├────────────┼───────┼──────┼───────┼───────────────────────────────┼──────┼────────────┤
│ /          │ 29.5G │ 3.3G │ 25.0G │ [##..................]  11.0% │ ext4 │ /dev/vda1  │
╰────────────┴───────┴──────┴───────┴───────────────────────────────┴──────┴────────────╯

Na koniec warto zapoznać się z parametrem help, który pokaże opisy wszystkich dostępnych parametrów.
duf --help