예를 들어 보겠습니다.
- "/" 또는 루트 파일 시스템 크기는 10GB이며 현재 100% 사용됩니다.
- "/usr"은 "/" 아래의 디렉터리입니다.
- "/usr/something"은 별도의 논리 볼륨 또는 마운트 지점이며 괜찮아 보입니다.
- "/var"는 별도의 LV이며 보기에 좋습니다.
루트 볼륨에서 어떤 디렉터리/파일이 디스크 공간을 소비하고 있는지 확인할 때 아래와 같이 "du" 명령을 사용합니다.
du -sh /*
그러나 여기에는 다른 파티션/볼륨도 포함됩니다.
du -x -sh /*
그것은 같은 일을 합니다. 다른 디스크 볼륨은 제외되지 않습니다. 그러나 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
-x, --one-file-system 다른 파일 시스템의 디렉터리 건너뛰기
루트 파일 시스템에서 디스크 공간의 대부분을 차지하는 "/usr"이 "/" 아래의 디렉터리인 경우 "du -x -sh /usr/*"를 실행하면 "/ usr/도 보고됩니다. 뭔가" "이것은 별도의 디스크이고 크기가 커서 명령이 종료될 때 많은 지연을 유발합니다.
요점:"du" 명령이나 다른 명령을 실행할 때 해당 디렉토리/파일 시스템 아래의 다른 디스크 볼륨을 제외하고 "하나의 파일 시스템"만 표시하여 디스크 사용량과 범인 파일을 식별하는 방법은 무엇입니까?
감사해요!
답변1
du
귀하의 지시를 정확하게 따르십시오.
-x
다른 파일 시스템의 디렉터리를 건너뛰지만 명령줄의 옵션이 아닌 모든 인수에 대해 이 작업을 수행합니다.
실행하면 자세한 정보를 알려준다고 du -x -sh /*
하네요du
모두/
파일 및 디렉토리다른 파일 시스템의 마운트 지점인지 여부에 관계없이.
du
단일 인수를 사용하지 않으면 /*
모든 경로 이름이 로 확장됩니다 /*
. 쉘은 /*
다음으로 확장됩니다.모두파일/디렉토리/소켓/fifos/etc 이름을 일치시키고 /
전달합니다 du
(실제로 .
"숨겨진" 파일 이름으로 시작하는 파일 이름을 제외한 모든 이름 - dotglob
쉘 옵션이 설정되지 않은 경우). 보기 man bash
및 Pathname Expansion
검색
아마도 당신이 원하는 것은 du
( -d
일명 --max-depth
) 옵션을 사용하는 것입니다. 예를 들어
# du -h -x -d 1 /
512 /media
8.7M /var
512 /srv
1.4G /opt
10K /tmp
512 /mnt
512 /boot
1.1M /etc
13K /run
512 /home
97M /usr
1.5G /
다른 파일 시스템(예: /proc)이 출력에서 어떻게 제외되는지 참고하세요. 이는 -d 1
최대 깊이와 일치하더라도 자체 파일 시스템이기도 하므로 /
제외 -x
되고 du
이러한 마운트 지점으로 드롭다운되지 않기 때문입니다.
참고: -d
예, 비표준(예: 비POSIX) 옵션입니다 du
. 그러나 GNU 및 *BSD 버전 모두에서 사용할 수 있으며 du
아마도 다른 버전에서도 사용할 수 있습니다. 즉, 이것은 확실히 Linux 및 FreeBSD에서 작동하며 다른 최신 UNIX 계열 시스템에서는 거의 확실하게 작동하지만 아마도 고대 또는 독점 UNIX에서는 작동하지 않을 것입니다.
귀하의 질문()에 있는 매뉴얼 페이지에서 발췌한 내용은 귀하가 GNU 버전의 GNU를 -x, --one-file-system skip directories on different file systems
사용하고 있음을 나타냅니다 .du
coreutils