내 명령은 다음과 같습니다. 유휴 CPU와 사용된 CPU를 다음 형식으로 인쇄합니다. awk 출력을 소수점 이하 두 자리로 제한하고 싶습니다.
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} {free=($5)*100/($2+$3+$4+$5)} END {print "Used Cpu:",usage "%"} {print "Free Cpu:",free "%"}'
산출:
Free Cpu: 98.9588%
Used Cpu: 1.04125%
원하는 출력:
Free Cpu: 98.95%
Used Cpu: 1.04%
답변1
일부 코드 검토:
- awk는 grep의 기능을 수행할 수 있으므로 파이프가 필요하지 않습니다.
- 신뢰성을 향상시키기 위해 awk 코드에 줄바꿈을 추가하세요
예를 들어:
awk '$1 == "cpu" {
printf "Used Cpu: %5.2f%%\n", 100*($2+$4)/($2+$4+$5)
printf "Free Cpu: %5.2f%%\n", 100*$5/($2+$3+$4+$5)
}' /proc/stat
출력이 잘 정렬되었습니다.
Used Cpu: 5.34%
Free Cpu: 94.63%
답변2
또 다른 접근 방식은산출포맷 OFMT="%5.2f%%"
할 포맷모두디지털 출력:
$ awk -v OFMT="%5.2f%%" '
$1 == "cpu" {
print( "Used Cpu: ", 100*($2+$4)/($2+$4+$5) )
print( "Free Cpu: ", 100*$5/($2+$3+$4+$5) )
}
' /proc/stat
Used Cpu: 9.52%
Free Cpu: 90.48%