Поиск по сайту:

Как проверить место на диске с помощью 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. Они очень полезны для проверки доступного и используемого пространства в смонтированных файловых системах, а также для получения подробной информации о размере файлов и каталогов. Мы рассмотрели наиболее распространенные случаи использования; Более подробную информацию, как всегда, смотрите в руководствах!

Статьи по данной тематике: