다음 도움말 지시문에도 불구하고:
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
와일드카드 문자는 호출 전에 쉘에 의해 확장됩니다 *
. 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 /
차례로 선택하면 그 아래에 마운트된 다른 파일 시스템을 건너뜁니다./proc
/sys
/