你们不尊重自己的旗帜吗?

你们不尊重自己的旗帜吗?

尽管有以下帮助指令:

root@Andromeda:/# du --help | grep -- -x
  -x, --one-file-system    skip directories on different file systems

以下查询继续检查例如/proc这是一个不同的文件系统

root@Andromeda:/# du -schx *
13M bin
104M    boot
4,0K    cdrom
0   dev
16M etc
85G home
0   initrd.img
0   initrd.img.old
802M    lib
4,0K    lib64
16K lost+found
28K media
4,0K    mnt
324M    opt
du: cannot access 'proc/8303/task/8303/fd/4': No such file or directory
du: cannot access 'proc/8303/task/8303/fdinfo/4': No such file or directory
du: cannot access 'proc/8303/fd/3': No such file or directory
du: cannot access 'proc/8303/fdinfo/3': No such file or directory

为什么?

root@Andromeda:/# mount | grep -i proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

答案1

通配符在调用*之前由 shell 扩展。du因此du看到这样的东西:

du -schx bin boot dev etc home initrd.img lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var vmlinuz

du命令尊重该-x标志并同意跳过不同文件系统上的文件。然后它就出发了。首先它处理bin.然后它处理boot.然后它处理dev. (你明白了。)稍后它会处理proc。依此类推,直到列表末尾。

请注意,这里的-x承诺适用于它正在搜索的文件树中的文件和文件系统(与当前目录无关)。因此,虽然proc在它自己的文件系统上,但这无关紧要:du只会跳过文件和目录之内proc位于不同的文件系统上。

如果您选择了du -xs /then /proc/sys、 ,则安装在其下的其他文件系统/将被跳过。

相关内容