당신은 당신의 깃발을 존중하지 않습니까?

당신은 당신의 깃발을 존중하지 않습니까?

다음 도움말 지시문에도 불구하고:

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플래그를 존중하고 다른 파일 시스템의 파일을 건너뛰는 데 동의합니다. 그런 다음 출발했습니다. 먼저 를 처리 binboot다음 을 처리 dev합니다 proc. 목록이 끝날 때까지 계속됩니다.

여기서 약속 은 -x검색 중인 파일 트리의 파일 및 파일 시스템에 적용됩니다(현재 디렉터리와 무관). 따라서 proc자체 파일 시스템에 있는 동안에는 중요하지 않습니다. du파일과 디렉터리만 건너뛰게 됩니다.이내에proc다른 파일 시스템에서.

, , 을 du -xs /차례로 선택하면 그 아래에 마운트된 다른 파일 시스템을 건너뜁니다./proc/sys/

관련 정보