Почему «du» на устройстве сообщает о нулевом использовании?

Выход

sudo df -h

равен

Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                  9.2G  5.7G  3.1G  65% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   357M  720K  356M   1% /run
/dev/disk/by-uuid/13605893-3936-4fd6-a7f5-e249f16c3f72  9.2G  5.7G  3.1G  65% /
tmpfs                                                   5.0M  4.0K  5.0M   1% /run/lock
tmpfs                                                   2.2G  2.5M  2.2G   1% /run/shm
/dev/sda6 

                                          278G   12G  252G   5% /home

, тогда как

sudo du -sh /dev/sd*

дает

0   /dev/sda
0   /dev/sda1
0   /dev/sda2
0   /dev/sda5
0   /dev/sda6

o_O [ ! d4]

1
задан 2 January 2014 в 22:40

3 ответа

Хорошо известна разница между свободным пространством, показанным df, и объемом пространства диска за вычетом пробела, используемого в du (из-за размеров блоков и накладных расходов и тому подобного), но это не то, что вы здесь спрашивается ...

du работает на смонтированных файловых системах. Вы пытаетесь заставить его работать на устройствах и разделах. Если вы хотите увидеть, какое пространство на свободном конкретном устройстве, прокрутите его разделы, смонтируйте их, а затем запустите du с его аргументом --one-file-system (aka -x).

Например: [ ! d2]

sudo mount /dev/sda1 /mnt
sudo du -shx /mnt/
sudo umount /mnt/
# repeat for sda2, sdb1, etc
1
ответ дан 24 May 2018 в 13:27

Устройство типа /dev/sda - это особый вид файла, который можно использовать для доступа к некоторым функциям ядра. Вы можете создавать устройства с помощью mknod.

du обрабатывает устройства так же, как и любой другой файл, и показывает размер, который они используют в файловой системе, которая всегда равна 0.

1
ответ дан 24 May 2018 в 13:27

Я наткнулся на эту старую нить и для тех, кто ищет решение для перечисления размеров файлов, когда «du» дает вывод размера 0 на смонтированной виртуальной файловой системе, просто добавьте флаг «-b». Например:

du -sbh <path>

Также будет работать следующее (которое включено в флаг «-b»):

du -sh --apparent-size <path>
0
ответ дан 24 May 2018 в 13:27

Другие вопросы по тегам:

Похожие вопросы: