Выход
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]
Хорошо известна разница между свободным пространством, показанным 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
Устройство типа /dev/sda - это особый вид файла, который можно использовать для доступа к некоторым функциям ядра. Вы можете создавать устройства с помощью mknod.
du обрабатывает устройства так же, как и любой другой файл, и показывает размер, который они используют в файловой системе, которая всегда равна 0.
Я наткнулся на эту старую нить и для тех, кто ищет решение для перечисления размеров файлов, когда «du» дает вывод размера 0 на смонтированной виртуальной файловой системе, просто добавьте флаг «-b». Например:
du -sbh <path>
Также будет работать следующее (которое включено в флаг «-b»):
du -sh --apparent-size <path>