В статье разбираем утилиты 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 — дополнительно выводить информацию по файлам в каталоге.