Linux에서 디스크 공간이 어디로 가는지 추적하시나요?

Linux에서 디스크 공간이 어디로 가는지 추적하시나요?

Linux 시스템을 관리할 때 파티션이 가득 차면 원인을 찾기 위해 애쓰는 경우가 종종 있습니다. 나는 일반적으로 를 사용 du / | sort -nr하지만 대규모 파일 시스템에서는 결과를 반환하는 데 오랜 시간이 걸립니다.

du또한 이는 일반적으로 최악의 범죄자를 강조하는 데 성공하지만 더 미묘한 상황에서는 사용하지 않고 sort 출력에서 ​​검색해야 하는 경우가 많습니다 .

나는 꽤 많은 시스템을 관리해야 하고 새 소프트웨어를 설치하는 것이 번거롭기 때문에 표준 Linux 명령에 의존하는 명령줄 솔루션을 선호합니다(특히 디스크 공간이 부족한 경우!)

답변1

노력하다ncdu, 뛰어난 명령줄 디스크 사용량 분석기:

"ncdu" 프로그램의 출력입니다. 출력에는 파일 크기와 이름과 함께 /usr/portage/distfiles에 있는 파일이 크기의 내림차순으로 나열됩니다. 239.1MiB "firefox-57.0.source.tar.xz" 파일이 239.4MiB "firefox-57.0.1.source.tar.xz" 이후 버전으로 대체되었으므로 사용자는 이를 제거하고 있습니다.

답변2

직접 가지 마세요 du /. df자신에게 영향을 미치는 파티션을 찾은 다음 du명령을 시도하는 데 사용합니다 .

내가 시도해보고 싶은 것 중 하나는

# U.S.
du -h <dir> | grep '[0-9\.]\+G'
# Others
du -h <dir> | grep '[0-9\,]\+G'

"사람이 읽을 수 있는 형식"으로 치수를 인쇄하기 때문입니다. 파티션이 매우 작지 않은 한, 기가바이트 디렉터리에 대한 greping은 원하는 것을 위한 매우 좋은 필터입니다. 시간이 좀 걸리겠지만 할당량을 설정하지 않으면 그렇게 되는 것 같아요.

@jchavannes가 댓글에서 지적했듯이, 잘못된 긍정을 너무 많이 발견하면 표현이 더 정확해질 수 있습니다. 나는 이 제안을 따랐고 결과가 좋아졌지만 여전히 거짓 긍정이 있으므로 장단점만 있습니다(expr이 단순할수록 결과가 나쁨, expr이 더 복잡하고 expr이 길수록 결과가 더 좋음). 출력에 작은 디렉터리가 너무 많이 나타나면 이에 따라 정규식을 조정하십시오. 예를 들어,

grep '^\s*[0-9\.]\+G'

훨씬 더 정확합니다(1GB 미만의 디렉터리는 나열되지 않음).

만약 너라면하다할당량이 있어서 사용하시면 됩니다

quota -v

디스크를 점유하고 있는 사용자를 찾습니다.

답변3

먼저 아래 요약 보기를 사용하세요 du.

du -s /*

그 결과 각 매개변수의 크기, 즉 위 예의 각 루트 폴더 크기가 인쇄됩니다.

게다가, 둘 다암소 비슷한 일종의 영양du그리고BSDdu깊이가 제한될 수 있습니다(하지만 POSIX는 du그럴 수 없습니다!):

  • 암소 비슷한 일종의 영양(리눅스,...):

    du --max-depth 3
    
  • BSD(애플 시스템, ...):

    du -d 3
    

이것은 것이다한계 출력 표시깊이 3으로. 물론 계산되어 표시되는 크기는 여전히 전체 깊이의 합입니다. 그러나 그럼에도 불구하고 표시 깊이를 제한하면 계산 속도가 크게 향상됩니다.

또 다른 유용한 옵션은 -h(GNU 및 BSD의 단어이지만 POSIX뿐만 ​​아니라 다시 말함 du) "사람이 읽을 수 있는" 출력(예: KiB, MiB 사용) 입니다.등.).

답변4

파일 시스템에서 가장 큰 파일을 찾는 데는 항상 오랜 시간이 걸립니다. 정의에 따르면 대용량 파일을 찾으려면 전체 파일 시스템을 탐색해야 합니다. 유일한 해결책은 모든 시스템에서 cron 작업을 실행하여 파일을 미리 준비하는 것입니다.

또 다른 점은 du의 x 옵션이 du가 다른 파일 시스템으로의 마운트 지점을 따라가는 것을 방지하는 데 유용하다는 것입니다. 즉:

du -x [path]

내가 일반적으로 실행하는 전체 명령은 다음과 같습니다.

sudo du -xm / | sort -rn > usage.txt

-m메서드는 결과를 메가바이트 단위로 반환하고 sort -rn결과에서 가장 큰 숫자를 먼저 정렬합니다. 그런 다음 편집기에서 Usage.txt를 열면 가장 큰 폴더(/로 시작)가 맨 위에 표시됩니다.

관련 정보