최상위 파티션에 대해서만 디스크 사용량을 표시합니다.

최상위 파티션에 대해서만 디스크 사용량을 표시합니다.

예를 들어 보겠습니다.

  1. "/" 또는 루트 파일 시스템 크기는 10GB이며 현재 100% 사용됩니다.
  2. "/usr"은 "/" 아래의 디렉터리입니다.
  3. "/usr/something"은 별도의 논리 볼륨 또는 마운트 지점이며 괜찮아 보입니다.
  4. "/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 bashPathname 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사용하고 있음을 나타냅니다 .ducoreutils

관련 정보