Linux 시스템을 관리할 때 파티션이 가득 차면 원인을 찾기 위해 애쓰는 경우가 종종 있습니다. 나는 일반적으로 를 사용 du / | sort -nr
하지만 대규모 파일 시스템에서는 결과를 반환하는 데 오랜 시간이 걸립니다.
du
또한 이는 일반적으로 최악의 범죄자를 강조하는 데 성공하지만 더 미묘한 상황에서는 사용하지 않고 sort
출력에서 검색해야 하는 경우가 많습니다 .
나는 꽤 많은 시스템을 관리해야 하고 새 소프트웨어를 설치하는 것이 번거롭기 때문에 표준 Linux 명령에 의존하는 명령줄 솔루션을 선호합니다(특히 디스크 공간이 부족한 경우!)
답변1
노력하다ncdu
, 뛰어난 명령줄 디스크 사용량 분석기:
답변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를 열면 가장 큰 폴더(/로 시작)가 맨 위에 표시됩니다.