다음 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
제목이 생략됩니다.