Как проверить место на диске с помощью df и du в Linux
Df и du — две очень полезные утилиты, которые обычно устанавливаются по умолчанию во всех дистрибутивах Linux. Мы можем использовать первый, чтобы получить обзор используемого и доступного пространства в смонтированных файловых системах; второй, напротив, очень полезен для получения подробного отчета о пространстве, используемом файлами и каталогами. В этой статье мы рассмотрим их использование и увидим наиболее часто используемые параметры, которые можно использовать для изменения их поведения.
В этом уроке вы узнаете:
Как работает утилита df
Как показать вывод df в удобочитаемой форме
Как включить тип файловой системы в выходные данные df
-
Как включить или исключить файловые системы из вывода df
Как работает утилита du
Как получить удобный для человека результат с помощью du
Как получить сводную информацию об использованном пространстве
Как исключить файлы из вывода du
Как получить «общую сумму» пространства, используемого несколькими каталогами
Как проверить место на диске с помощью df и du в Linux
Требования к программному обеспечению и используемые соглашения
Дф
Утилита df
используется, помимо прочего, для отображения доступных файловых систем и используемого дискового пространства. Если программа вызывается без каких-либо аргументов, в отчет включаются все смонтированные файловые системы:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 2908316 0 2908316 0% /dev
tmpfs 2930156 28392 2901764 1% /dev/shm
tmpfs 2930156 1792 2928364 1% /run
tmpfs 2930156 0 2930156 0% /sys/fs/cgroup
/dev/mapper/fingolfin_vg-root_lv 35862048 7210616 26800040 22% /
tmpfs 2930156 124 2930032 1% /tmp
/dev/sda1 1032088 161664 817996 17% /boot
/dev/mapper/fingolfin_vg-home_lv 25671908 1515396 22829408 7% /home
/dev/mapper/fingolfin_vg-data_lv 152737296 90208196 54700828 63% /mnt/data
/dev/dm-5 152786272 90208644 54746804 63% /mnt/databk
tmpfs 586028 1124 584904 1% /run/user/1000
Давайте посмотрим на вывод команды. В первом столбце указан путь к файловой системе, во втором – ее размер, который указывается в блоках по 1 КБ. В третьем и четвертом столбцах указано используемое и доступное пространство соответственно. В пятом столбце указывается процент использования, а в последнем столбце мы видим точку монтирования файловой системы.
Df принимает в качестве аргументов один или несколько путей к файлам. Когда эти аргументы предоставлены, будет сообщена только информация о файловой системе, в которой находятся файлы. Например, если мы укажем /home/egdoc/.bashrc
в качестве аргумента файла, мы получим отчет о файловой системе, смонтированной в /home
, что в данном случае: находится на отдельном логическом томе LVM:
$ df /home/egdoc/.bashrc
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/fingolfin_vg-home_lv 25671908 1515468 22829336 7% /home
Если мы передаем точку монтирования в качестве аргумента команды, вместо этого будет передана информация о смонтированной файловой системе.
Отображение информации в удобочитаемой форме
Как вы можете видеть в результатах предыдущих примеров, размеры файловой системы и используемое пространство указываются в блоках по 1 КБ, поэтому они не очень удобны для человека. Чтобы получить эту информацию в формате, более понятном нам, людям, мы можем вызвать df
с опцией -h
, которая является сокращением от --human-readable.
. Если эта опция предусмотрена, размеры сообщаются в степени 1024
с удобным суффиксом:
$ df -h /home/egdoc/.bashrc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fingolfin_vg-home_lv 25G 1.5G 22G 7% /home
Включение или исключение файловых систем
В некоторых случаях нам может потребоваться, чтобы в выходные данные команды были включены только некоторые определенные файловые системы. Чуть позже мы увидим, как решить эту задачу, но сначала давайте посмотрим, как включить тип файловой системы в выходные данные df
. -T
(--print-type
) позволяет нам добиться именно этого:
$ df -h -T
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.8G 0 2.8G 0% /dev
tmpfs tmpfs 2.8G 22M 2.8G 1% /dev/shm
tmpfs tmpfs 2.8G 1.8M 2.8G 1% /run
tmpfs tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup
/dev/mapper/fingolfin_vg-root_lv ext4 35G 6.9G 26G 22% /
tmpfs tmpfs 2.8G 124K 2.8G 1% /tmp
/dev/sda1 ext2 1008M 158M 799M 17% /boot
/dev/mapper/fingolfin_vg-home_lv ext4 25G 1.5G 22G 7% /home
/dev/mapper/fingolfin_vg-data_lv ext4 146G 87G 53G 63% /mnt/data
/dev/dm-5 ext4 146G 87G 53G 63% /mnt/databk
tmpfs tmpfs 573M 1.2M 572M 1% /run/user/1000
Чтобы исключить или включить определенные типы файловых систем из вывода команды, мы можем использовать два параметра: -t
(--type
) и -x
(--тип исключения
). Имена опций говорят сами за себя: мы можем использовать первые, чтобы указать тип файловой системы, который должен быть включен в выходные данные. Например, чтобы получить информацию только о файловых системах ext4
, мы должны запустить:
$ df -h -t ext4
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fingolfin_vg-root_lv 35G 6.9G 26G 22% /
/dev/mapper/fingolfin_vg-home_lv 25G 1.5G 22G 7% /home
/dev/mapper/fingolfin_vg-data_lv 146G 87G 53G 63% /mnt/data
/dev/dm-5 146G 87G 53G 63% /mnt/databk
Последний вариант, -x
, позволяет нам вместо этого указать тип файловой системы, который должен быть исключен из вывода df
. Чтобы отобразить все файловые системы, кроме ext4
, мы должны запустить:
$ df -h --x ext4
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.8G 0 2.8G 0% /dev
tmpfs 2.8G 22M 2.8G 1% /dev/shm
tmpfs 2.8G 1.8M 2.8G 1% /run
tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup
tmpfs 2.8G 124K 2.8G 1% /tmp
/dev/sda1 1008M 158M 799M 17% /boot
tmpfs 573M 1.2M 572M 1% /run/user/1000q
Ду
Утилита du
используется для создания отчетов об использовании каталогов и файлового пространства. При вызове без аргументов утилита (рекурсивно) отображает список всех каталогов, существующих в текущей позиции, вместе с информацией об использовании ими пространства (вывод ниже для удобства обрезан):
$ du
4 ./Public
[...]
4 ./Documents
4 ./Videos
4 ./Pictures
1469376 .
Как и в случае с df
, мы можем заставить команду du
выдавать более удобочитаемый вывод, используя опцию -h
, сокращенно для --читабельно
. Например, когда эта опция используется, приведенный выше вывод становится:
$ du -h
4.0K ./Public
[...]
4.0K ./Documents
4.0K ./Videos
4.0K ./Pictures
1.5G .
Если мы хотим визуализировать только сводку об используемом дисковом пространстве в определенном каталоге, мы можем использовать опцию -s
, которая является сокращением от --summarize
. Если мы вызовем команду с этой опцией в том же рабочем каталоге, что и раньше, мы получим следующий результат:
$ du -hs
1.5G .
Включение файлов и их размера в выходные данные du
По умолчанию, как мы видим, в выводе команды du
отображаются только каталоги. Чтобы включить в вывод также стандартные файлы, мы можем использовать опцию -a
(сокращение от -all
). Если мы перезапустим команду с этой опцией, мы получим следующее:
$ du -ha
4.0K ./Public
4.0K ./.Xauthority
4.0K ./.bashrc
[...]
4.0K ./Documents
4.0K ./Videos
4.0K ./Pictures
1.5G .
Как вы можете видеть, файлы .Xauthority
и .bashrc
(и соответствующее использование пространства) были включены в (усеченный) вывод.
Исключение файлов, соответствующих шаблону
По сути, у нас есть два способа указать файлы и каталоги, которые следует исключить из вывода команды du
: первый — вызвать программу с помощью --exclude
. вариант. Эта опция принимает шаблон в качестве аргумента; все файлы и имена каталогов, соответствующие этому шаблону, будут исключены. В качестве примера предположим, что мы хотим исключить все скрытые файлы из вывода du
. Мы знаем, что имена скрытых файлов начинаются с точки, поэтому мы можем запустить:
$ du -ha --exclude=./.*
4.0K ./Public
4.0K ./Music
4.0K ./Downloads
4.0K ./Desktop
4.0K ./Templates
4.0K ./Documents
4.0K ./Videos
4.0K ./Pictures
36K .
Как и ожидалось, в выходные данные были включены только нескрытые файлы и каталоги. Мы можем указать несколько шаблонов исключения, повторив параметр --exclude
. Например, предположим, что мы хотим также исключить файлы и каталоги, которые иметь имя, начинающееся с символа D
. Мы бы запустили:
$ du -ha --exclude=./.* --exclude=./D*
4.0K ./Public
4.0K ./Music
4.0K ./Templates
4.0K ./Videos
4.0K ./Pictures
24K .
Второй способ указать шаблон, который следует использовать для исключения файлов и каталогов, — это использовать параметр -X
(--exclude-from
). Эта опция принимает имя файла в качестве аргумента: именно в этом файле мы указываем шаблоны, подлежащие сопоставлению. Давайте создадим его. Мы назовем его exclusions.txt
:
$ $ cat << EOF > exclusions.txt
> ./.*
> ./D*
> EOF
Имея наш файл, мы можем запустить:
$ du -ha --exclude-from=exclusions.txt
4.0K ./Public
4.0K ./Music
4.0K ./exclusions.txt
4.0K ./Templates
4.0K ./Videos
4.0K ./Pictures
28K .
Как видите, мы получили тот же результат, что и выше, за исключением того факта, что размер файла исключений (exclusions.txt
) теперь включен в подсчет пространства, используемого текущим каталогом ( последняя строка вывода: 24K
против 28K
).
Получение «общей суммы» использованного пространства
Утилита du
принимает в качестве аргументов несколько файлов и каталогов. Например, мы можем использовать его для получения сводной информации о пространстве, используемом каталогами /boot
и /etc
:
$ sudo du -hs /etc /boot
28M /etc
157M /boot
В приведенном выше примере мы запустили du с sudo
, чтобы предоставить ему доступ к некоторым ограниченным каталогам. Как вы можете видеть, сводная информация об использовании пространства сообщается для каждого указанного нами каталога. Что, если мы хотим получить «общий итог», то есть сумму пространства, используемого двумя каталогами? Для этого мы можем использовать опцию -c
(сокращение от --total
). Наша команда становится:
$ sudo du -hsc /etc /boot
28M /etc
157M /boot
184M total
Выводы
В этой статье мы научились использовать df
и du
, две утилиты, установленные по умолчанию во всех дистрибутивах Linux. Они очень полезны для проверки доступного и используемого пространства в смонтированных файловых системах, а также для получения подробной информации о размере файлов и каталогов. Мы рассмотрели наиболее распространенные случаи использования; Более подробную информацию, как всегда, смотрите в руководствах!