저는 Linux에서 명령을 실행하기 위해 Java를 사용하고 있습니다. top은 대화형 명령이고 모든 CPU에 대한 정보를 얻으려면 1을 눌러야 하기 때문에 사용할 수 없습니다. 그래서 다음 명령을 사용하여 CPU 정보를 얻습니다.
cat /proc/stat|grep "^cpu[0-9]* ";sleep 3;cat /proc/stat|grep "^cpu[0-9]* "
내가 얻는 결과는 다음과 같습니다.
cpu 4673683 193 832132 1544221346 142352 1220 171760 0 0
cpu0 2473973 90 524817 769734476 73628 1124 158588 0 0
cpu1 2199709 103 307315 774486870 68723 95 13171 0 0
cpu 4673683 193 832133 1544221744 142352 1220 171760 0 0
cpu0 2473974 90 524817 769734674 73628 1124 158588 0 0
cpu1 2199709 103 307315 774487069 68723 95 13171 0 0
이제 내 질문은 top 명령으로 표시되는 백분율을 얻는 방법입니다.
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
답변1
mpstat
패키지 에 포함된 유틸리티를 사용해 보세요 sysstat
.
mpstat -u -P ALL
CentOS 호스트(vcpu가 1개 있는 vhost)의 출력:
Linux 3.10.0-229.4.2.el7.x86_64 (testhost.testdomain) 08/11/2015 _x86_64_ (1 CPU)
10:03:57 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:03:57 AM all 0.21 0.05 0.29 0.04 0.00 0.13 0.00 0.00 0.00 99.28
10:03:57 AM 0 0.21 0.05 0.29 0.04 0.00 0.13 0.00 0.00 0.00 99.28
Ubuntu 호스트의 출력:
Linux 3.13.0-24-generic (myhost) 11-08-15 _x86_64_ (4 CPU)
10:05:37 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:05:37 all 3,34 0,04 1,16 0,13 0,08 0,00 0,00 0,00 0,00 95,25
10:05:37 0 2,81 0,06 1,93 0,13 0,11 0,00 0,00 0,00 0,00 94,96
10:05:37 1 3,94 0,03 0,78 0,10 0,03 0,00 0,00 0,00 0,00 95,13
10:05:37 2 3,31 0,02 1,21 0,16 0,07 0,00 0,00 0,00 0,00 95,24
10:05:37 3 3,31 0,05 0,73 0,14 0,10 0,00 0,00 0,00 0,00 95,68
답변2
어쩌면 이것을 시도해보십시오:
top -b -n 1 | grep -i "^cpu"
내 컴퓨터의 출력은 다음과 같습니다.
wbzz@mambet:~$ top -b -n 1 | grep -i "^cpu"
Cpu0 : 10.5%us, 4.5%sy, 0.0%ni, 82.4%id, 1.6%wa, 0.0%hi, 1.0%si, 0.0%st
Cpu1 : 44.5%us, 15.0%sy, 0.0%ni, 40.2%id, 0.2%wa, 0.0%hi, 0.2%si, 0.0%st
Cpu2 : 43.8%us, 18.1%sy, 0.0%ni, 37.7%id, 0.1%wa, 0.0%hi, 0.2%si, 0.0%st
Cpu3 : 45.1%us, 14.5%sy, 0.0%ni, 40.3%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
이는 Slackware-current에 적용됩니다. CentOS 시스템에서는 grep 표현식을 다음과 같이 변경해야 합니다.
top -b -n 1 | grep -i "^%cpu"