du 임계값의 대안

du 임계값의 대안

특정 크기보다 큰 디렉토리를 검색하는 방법을 찾고 있습니다. 나는 다음이 매우 잘 작동한다는 것을 알았습니다.

# du -sh /var/log/ --threshold=5G
5.3G    /var/log/

문제는 --threshold가 Ubuntu에서만 지원되는 것 같다는 것입니다. 예를 들어 CentOS에서 시도하면 다음과 같은 결과가 나타납니다.

# du -sh /var/log/ --threshold=5G
du: unrecognized option '--threshold=5G'
Try `du --help' for more information.

CentOS, Ubuntu 및 Debian에서 작동하는 대안을 아는 사람이 있습니까?

du -s 플래그를 지원하려면 (하위 디렉토리의 크기를 제외하고) 동등한 것이 확실히 필요하다는 점에 유의해야 합니다.

답변1

--threshold사용 가능한 명령은 다음과 같습니다.

  • 우분투 18.04/20.4
  • 데비안 제시 8/stretch 9 버스터 10
  • 센토스 7

큰 명령줄:

(
  THRESHOLD='200M' 
  PATTERN='==========---------========----'
  ( 
    sudo find / -type d -print0 2>/dev/null | \
         sudo xargs -0 -P4 -- du -sh  2>/dev/null ;
    echo "${THRESHOLD} ${PATTERN}" 
  ) | sort -h | sed "0,/${PATTERN}/ d"
)

참고: 폴더 이름에 공백이 있는 경우 -print0두 파일 사이의 구분 기호가 도움이 됩니다.\0

-0구분 기호가 있는 스트림을 읽도록 xargs에 지시\0

-P4어느 정도의 병렬 처리로 4를 실행하도록 지시합니다.

0,/REGEX/ dsed첫 번째 행과 REGEX와 일치하는 행 사이의 행을 삭제 하도록 지시합니다 .

첨부된:

Centos 6에서는 사용할 수 없습니다.

답변2

#EchoMike444에서 언급했듯이 이 옵션은 CentOS 7의 명령 --threshold에서는 작동 하지만 CentOS 6 및 이전 버전에서는 작동하지 않습니다. du내 평판이 부족해서 그의 솔루션에 대해 언급할 수는 없지만 꽤 잘 작동한다고 말하고 싶습니다. 해당 명령을 잘 이해하지 못 sed하므로 작업을 완료하는 데 도움이 될 수 있는 몇 가지 대체 명령은 다음과 같습니다.

실행한 명령은 요약만 수행합니다./var/로그/디렉토리이지만 하위 디렉토리는 포함하지 않습니다.

# du -sh /var/log/ --threshold=5G

CentOS 7을 사용하는 경우 다음 명령을 실행하면 /var/log/ 디렉터리 트리에 있는 모든 5G 이상의 디렉터리에 대한 저장 공간 사용량이 표시됩니다.

# find /var/log/* -type d | xargs du -h --threshold=5G | sort -hr

당신이 그것을 어떻게 사용할 계획인지는 잘 모르겠지만 여기 당신에게 도움이 될 만한 것이 있습니다. 다음 명령은 찾고 있는 내용을 정확하게 제공하지는 않지만 디렉터리 내에서 가장 큰 10개의 하위 디렉터리를 식별합니다./var/로그/목차. echo 명령의 출력보다 높은 내용이 원하는 내용이 됩니다.

# (find /var/log/* -type d -exec du -sh {} \; ; echo "5G ####################") | sort -hr | head

간단하게 유지하려면 다음 명령을 실행하면 위와 동일한 결과가 나오지만 echo 명령의 출력은 제외됩니다.

# find /var/log/* -type d -exec du -sh {} \; | sort -hr | head

5G 이상의 파일을 찾고 있다면 다음 명령을 사용하여 해당 결과를 얻을 수 있습니다.

# find /var/log/ -size +5G -exec ls -l {} \; | sort -nr -k5

관련 정보