가장 많은 공간을 차지하는 디렉토리

가장 많은 공간을 차지하는 디렉토리

Jenkins가 구축을 중단했으며 df에서 볼 수 있습니다. /var가 최대값에 도달했습니다. 다음으로 범인은 /var/lib/jenkins임을 알 수 있습니다.

52K     alternatives
...
4.0K    games
2.3G    jenkins   <--this one
4.0K    logrotate.status
...
12M     yum
2.4G    total

그러나 이 2.3GB의 대부분을 소비하는 폴더를 확인하기 위해 jenkins 디렉토리로 이동하면 몇 가지 이상한 결과가 나타납니다.

$ sudo du -csh *
16K     config.xml
0       Connection Activity monitoring to slaves.log
0       Download metadata.log
0       Fingerprint cleanup.log
7.3M    fingerprints
4.0K    hudson.maven.MavenModuleSet.xml
4.0K    hudson.model.UpdateCenter.xml
4.0K    hudson.scm.CVSSCM.xml
4.0K    hudson.scm.SubversionSCM.xml
4.0K    hudson.tasks.Ant.xml
4.0K    hudson.tasks.Mailer.xml
4.0K    hudson.tasks.Maven.xml
4.0K    hudson.tasks.Shell.xml
4.0K    hudson.triggers.SCMTrigger.xml
4.0K    identity.key.enc
4.0K    jenkins.diagnostics.ooom.OutOfOrderBuildMonitor
4.0K    jenkins.model.ArtifactManagerConfiguration.xml
4.0K    jenkins.model.DownloadSettings.xml
4.0K    jenkins.model.JenkinsLocationConfiguration.xml
4.0K    jenkins.mvn.GlobalMavenConfig.xml
4.0K    jenkins.security.QueueItemAuthenticatorConfiguration.xml
160M    jobs
4.0K    nodeMonitors.xml
12K     Out of order build detection.log
41M     plugins
4.0K    proxy.xml
4.0K    queue.xml.bak
4.0K    secret.key
0       secret.key.not-so-secret
32K     secrets
1.1M    updates
8.0K    userContent
12K     users
4.0K    Workspace clean-up.log
209M    total

2.3GB에서 209M까지. 내가 공간을 만들 수 있도록 설명해 줄 수 있는 사람이 있나요? 웹 프런트엔드에서 Jenkins 작업공간을 제거했는데도 여전히 이 결과가 표시됩니다.

답변1

이 명령으로,

sudo du -csh *

숨겨진 디렉터리가 누락되었습니다. 즉, 점( )을 제외한 모든 이름으로 시작하는 모든 이름으로 *확장됩니다 . .이는 점으로 시작하는 모든 디렉토리 이름이 du명령에 전달되지 않으며 해당 크기가 고려되지 않음을 의미합니다.

대부분의 경우 .??*매개변수를 추가하는 것으로 충분합니다.

sudo du -csh .??* *

추가 기능은 .??*점으로 시작하고 문자가 2개 이상인 모든 이름으로 확장됩니다. 대상 .., 즉 상위 디렉터리는 매개변수에서 제외됩니다.

가정된 파일과 디렉터리는 .a여전히 누락될 것이며 -대시( )로 시작하는 파일은 무시되고 최악의 경우 오류를 발생시킵니다.

이 향상된 버전은 파일 또는 디렉터리 이름이 대시로 시작하거나 이름이 점으로 시작하고 뒤에 단일 문자가 오는 경우 모든 디렉터리 크기를 올바르게 보고합니다.

sudo du -csh -- .[^.] .??* *

이것이 우리에게 --알려주는 du것은 옵션이 아닌 대시로 시작하는 인수를 이름으로 취하고, .[^.]점으로 시작하고 그 뒤에 점 이외의 단일 문자가 오는 모든 파일과 디렉터리를 처리된 이름에 추가한다는 것입니다. 여기에는 파일 및 디렉터리에 대해 가능한 모든 이름이 포함됩니다.

일부 셸은 이러한 이름 지정 문제에 대한 사용자 정의 해결 방법을 제공합니다.

bash:

shopt -s dotglob
sudo du -csh -- *

zsh:

sudo du -csh -- *(D)

ksh93:

FIGNORE='@(.|..)'
sudo du -csh -- *

답변2

꼭 원하는 답변은 아니지만 알아둘 만한 가치가 있는 답변은 다음과 같습니다.

sudo du -max /var/lib/jenkins | sort -n

이것은 아마도 제가 이런 종류의 작업에 가장 많이 사용하는 명령 중 하나일 것입니다. "-a"에는 전체 디렉터리 크기가 포함됩니다(따라서 최종 출력에서는 작은 파일로 가득 찬 디렉터리가 하나의 큰 디렉터리로 표시되고 모든 파일도 표시됩니다). 반면 -x는 이를 하나의 파일 시스템에 유지합니다. -h 대신 -m을 사용하면 읽기가 더 어렵지만, 고정 단위를 사용하면 숫자 정렬이 더 용이해집니다. 예를 들어 -h 수정자를 지원하는 상당히 새로운 정렬 명령이 없을 때에도 여전히 작동합니다.

답변3

시험해 보세요NCDU. 이것은 ncurses를 기반으로 하는 mc와 유사한 디렉터리 브라우저로, 다음 스크린샷에 표시된 것처럼 관심 없는 디렉터리를 삭제할 수 있는 옵션과 함께 어떤 디렉터리가 가장 많이 점유되어 있는지 확인할 수 있습니다.

여기에 이미지 설명을 입력하세요.

답변4

디렉토리에서 많은 공간을 차지하는 것이 무엇인지 알아내는 데 도움이 되는 몇 가지 좋은 그래픽 도구도 있습니다.

좋아요파일 라이트KDE의 일부입니다. 이곳을 탐험해 보세요/var/캐시내 컴퓨터에. 녹색과 노란색이 있는쉬운, 빨간색은자바, 마젠타는건축업자.

파일 라이트

내부 링은 외부 링에서 더 작은 부분으로 나누어진 직접적인 하위 디렉터리입니다. 이 도구를 사용하면 대용량 파일뿐만 아니라 작은 파일의 대규모 컬렉션과 같이 많은 공간을 차지하는 콘텐츠를 매우 쉽게 찾아보고 볼 수 있습니다.

관련 정보