为什么设备上的“du”报告使用量为零?

为什么设备上的“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

哦哦

答案1

您的原始设备列在 中/dev/,但这不是文件系统所在的位置。一旦设备被挂载,它就可以在挂载点,如“安装在”栏所列。

您应该du在挂载点上或挂载点的某个地方运行以计算文件系统的使用情况。例如:

sudo du -sh /home

你正在做的是询问设备列表在虚拟文件系统中使用了多少空间/dev。这没什么,因为它是纯虚拟的。

答案2

此类设备/dev/sda是一种特殊的文件,可用于访问某些内核函数。您可以使用以下方式创建设备姆诺德

du将设备像任何其他文件一样对待,并显示它们在文件系统中使用的大小(始终为 0)。

答案3

我偶然发现了这个旧帖子,对于任何想要找到解决方案来列出文件大小的人来说,当“du”在已安装的虚拟文件系统上给出 0 大小输出时,只需添加“-b”标志。就像这样:

du -sbh <path>

下面的方法也将有效(包含在“-b”标志中):

du -sh --apparent-size <path>

答案4

df嗯,众所周知,显示的可用空间与驱动器空间量减去已用空间之间存在差异du(因为块大小和开销等),但这不是您在这里要问的......

du在已安装的文件系统上工作。您正尝试让它在设备和分区上工作。如果您想查看某个空闲设备上的空间,请循环遍历其分区,安装它们,然后du使用其--one-file-system(又名-x)参数运行。

例如:

sudo mount /dev/sda1 /mnt
sudo du -shx /mnt/
sudo umount /mnt/
# repeat for sda2, sdb1, etc

相关内容