Disk-Usage

不尊重自己的旗幟?

  • April 19, 2019

儘管有以下幫助指令:

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)

萬用字元在呼叫*之前由 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. 依此類推,直到列表結束。

請注意,-xpromise 適用於它正在搜尋的文件樹中的文件和文件系統(它與目前目錄無關)。因此,雖然proc它在自己的文件系統上,但這無關緊要:du只會跳過不同文件系統上的文件和目錄proc

如果您選擇du -xs /then /proc,/sys和安裝在其下的其他文件系統,/則會被跳過。

引用自:https://unix.stackexchange.com/questions/513446