awk "df -Pm" 명령을 사용하여 FS 사용량이 90%를 초과하는 FS 이름을 얻는 방법은 무엇입니까?

awk "df -Pm" 명령을 사용하여 FS 사용량이 90%를 초과하는 FS 이름을 얻는 방법은 무엇입니까?

다음 oneliner를 사용하여 사용량이 90% 이상인 모든 디스크의 이름을 얻으려고 합니다.

df -Pm | awk '+$5 >= 90 {print}'

하지만 "100% 사용됨" 사례가 표시되지 않습니다. "100%"를 얻으려면 grep을 수행해야 합니다. 왜 제대로 작동하지 않나요?

답변1

출력 예를 들어주실 수 있나요 df -Pm? 나는 우리 대부분이 디스크 공간을 100% 사용하고 있지 않다고 확신합니다. ;)

방금 df출력을 수정하여 테스트했는데 귀하의 awk부분이 괜찮아 보입니다.

$ cat /tmp/1 | awk '+$5 >= 90 {print}'
tmpfs                        1978         1      1978     101% /dev/shm
tmpfs                        1978         1      1977     100% /run

답변2

내 생각에 문제는 퍼센트 기호에 있는데, 이는 >=를 문자열 비교로 바꿀 수 있습니다. 비교를 수행하기 전에 $5에 0을 추가하면 $5가 숫자로 해석됩니다.

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

답변3

약간 색다른 접근 방식을 취하는 것이 좋습니다. 약간의 수학은 누구에게도 해를 끼치 지 않습니다.

df -Pml | tail -n +2 | awk '{if ($4/$2 < 0.1) print $1,"is getting full."}'

이는 파일 시스템의 여유 공간이 10% 미만인지 여부를 계산합니다(열이 "사용됨"으로 표시되고 -l로컬 파일 시스템만 인쇄되더라도 실제로 df가 표시하는 방식입니다). 넣으면 tail -n +2제목이 생략됩니다.

관련 정보