fs 사용량이 80%를 초과하는 df 행만 표시

fs 사용량이 80%를 초과하는 df 행만 표시
root@SERVER ~$ df
Filesystem  512-blocks  Free    %Used   Iused   %Iused  Mounted on
/dev/YXCV   655360      365632  45% 6322    13% /
/dev/ASDF   3801088     670648  83% 41759   32% /usr
/dev/ASR    1048576     500496  53% 5555    9%  /var

df사용량이 80% 이상인 줄만 표시하도록 명령 출력을 파이프하려면 어떻게 해야 합니까 ?

예: 다음만 표시됩니다.

/dev/ASDF   3801088     670648  83% 41759   32% /usr

답변1

공백이 포함된 장치 이름이 없다고 가정합니다(출력을 구문 분석할 때 어려움을 겪음 df).

df -P | awk '0+$5 >= 80 {print}'

dfPOSIX 형식 대신 구현된 출력 형식을 사용하려면 필드 번호를 조정하세요.

그렇지 않은 경우 0+비교는 어휘적( 9%보다 큼 80)입니다. +이진 산술 연산자를 사용하여 강제로 $5숫자로 변환하고(그래서 가 9%9) 비교 결과를 숫자로 변환합니다. 사용+ 1위안) 와 같은 연산자는 awk '+$5 >= 80'일부 awk구현에서는 작동하지만 연산자가 무시되는 레거시 구현(A, W 및 K로 작성된 구현)에서는 작동하지 않습니다.

답변2

매우 우아하지는 않지만 효과적입니다. ext4를 자신의 fs로 바꾸십시오(grep 및 많은 경우). 또한 10을 자신의 임계값으로 바꾸십시오.

for fs in `cat /proc/mounts | grep ext4 | awk ' { print $2 }' | tr '\n' ' '` ;  do SPC=$( df $fs | awk 'END{ print $(NF-1) }' | sed 's/[^0-9]*//g' ) ; if [ $SPC -gt 10 ]; then  echo "$fs used more than 10";  fi done

답변3

죄송합니다. 누군가의 기여를 훔치려는 의도는 아니었지만 아직 댓글을 달 수는 없습니다.

나는 df명령이 실제로 90-99 사이의 모든 것을 놓친 것을 발견했습니다. 이 변경으로 문제가 해결되었습니다.

df -P | egrep "([80][0-9]|[90][0-9]|100)%"

답변4

df | egrep "([89][0-9]|100)%"

작동합니다.

관련 정보