Утилиты df, du и ncdu

В статье разбираем утилиты df, du и ncdu, которые покажут занятое место на диске и помогут выяснить кто занимает на диске больше всего места.

За что отвечают эти команды

Команда df позволяет определить занятое место на диске. С помощью команды du можно посмотреть размер файлов. А утилита ncdu позволяет быстро определить, что занимает больше всего места на диске.

Так как все эти команды используются для определения занимаемого места на диске, то я решил их объединить в одну статью.

Команда df

Первая команда, которой нужно воспользоваться, чтобы быстро получить информацию о занятом месте на диске — это команда df. Её удобно использовать с опцией -h, чтобы смотреть информацию в удобном для человека виде:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            97M  980K   96M   1% /run
/dev/sda2        16G  6,3G  8,6G  43% /
tmpfs           485M     0  485M   0% /dev/shm
tmpfs           5,0M     0  5,0M   0% /run/lock
tmpfs            97M  4,0K   97M   1% /run/user/1000

Как мы видим, корневой раздел (/), в который у нас примонтирован дисковый раздел /dev/sda2, занимает 43% дискового пространства.

Кроме этого, создавая файлы, мы занимаем индексные дескрипторы (inode) на файловой системе.  Чтобы посмотреть информацию по занятым индексным дескрипторам воспользуемся опцией -i:

$ df -i
Filesystem      Inodes  IUsed  IFree IUse% Mounted on
tmpfs           124059    659 123400    1% /run
/dev/sda2      1048576 123545 925031   12% /
tmpfs           124059      1 124058    1% /dev/shm
tmpfs           124059      3 124056    1% /run/lock
tmpfs            24811     25  24786    1% /run/user/1000

Из вывода видно, что у меня занято только 12% inode на корневом разделе.

Команда du

Следующая команда у нас высчитывает сколько места на диске занимает определенный каталог или файл. Это команда du. С опцией -h она покажет информацию в удобном для человека виде. Например, посмотрим сколько весит скачанный deb пакет веб сервера apache2:

$ du -h apache2_2.4.52-1ubuntu4_amd64.deb
96K     apache2_2.4.52-1ubuntu4_amd64.deb

Или сколько весит домашний каталог пользователя alex:

$ du -h /home/alex/
4,0K    /home/alex/.cache
12K     /home/alex/.ssh
8,0K    /home/alex/.config/htop
8,0K    /home/alex/.config/procps
20K     /home/alex/.config
4,0K    /home/alex/.local/share/nano
8,0K    /home/alex/.local/share
12K     /home/alex/.local
22M     /home/alex/

При этом, помимо информации о самом каталоге /home/alex/, мы видим все подкаталоги, которые находятся в нём. Если нам не нужна эта информация то используем опцию -s:

$ du -hs /home/alex/
22M     /home/alex/

А если нам нужна информация по каждому файлу, то воспользуемся опцией -a:

$ du -ha /home/alex/
12K     /home/alex/.bash_history
4,0K    /home/alex/.profile
4,0K    /home/alex/.cache
4,0K    /home/alex/.bash_logout
***
22M     /home/alex/

Команда ncdu

Для поиска того, что больше всего занимает места на диске, можно воспользоваться утилитой ncdu. Её нужно вначале установить:

$ sudo apt install ncdu

Начнём наш анализ от корня:

$ sudo ncdu /
    3,0 GiB [##########] /usr
    2,0 GiB [######    ]  swap.img
    1,3 GiB [####      ] /snap
    1,0 GiB [###       ] /var
  246,1 MiB [          ] /boot
   21,5 MiB [          ] /home
    6,2 MiB [          ] /etc
  984,0 KiB [          ] /run
   64,0 KiB [          ] /tmp
   60,0 KiB [          ] /root
***

Видим что больше всего занимает каталог /usr. Стрелочками можем выбрать каталог, и нажмём enter чтобы перейти в него. Перейдем в /usr:

    2,3 GiB [##########] /lib
  280,0 MiB [#         ] /src
  235,5 MiB [#         ] /share
  145,6 MiB [          ] /bin
   32,1 MiB [          ] /sbin
   12,0 MiB [          ] /include
    3,1 MiB [          ] /libexec
   64,0 KiB [          ] /local
    4,0 KiB [          ] /lib64
    4,0 KiB [          ] /libx32
    4,0 KiB [          ] /lib32
    4,0 KiB [          ] /games

Тут мы видим, что больше всего места занимает каталог lib, перейдем в него:

  926,8 MiB [##########] /modules
  850,4 MiB [######### ] /firmware
  236,2 MiB [##        ] /x86_64-linux-gnu
   75,4 MiB [          ] /snapd
   71,4 MiB [          ] /python3
   63,4 MiB [          ] /gcc
   23,9 MiB [          ] /python3.10
   19,0 MiB [          ] /udev
   18,4 MiB [          ] /debug
   10,3 MiB [          ] /systemd
***

И таким образом находим самые большие каталоги в системе. Для выхода из утилиты используется клавиша «q«.

Итог

Мы познакомились с командами df, du и ncdu.

Изученные опции команды df:

  • -h — показ в удобном для человека формате;
  • -i — вместо информации по занятой памяти получить информацию по inode;

Изученные опции команды du:

  • -h — показ в удобном для человека формате;
  • -s — не выводить информацию по подкаталогам;
  • -a — дополнительно выводить информацию по файлам в каталоге.