다른 사람들이 말했듯이 가장 좋은 방법은 아마입니다 top
. 약간의 조정과 약간의 구문 분석이 필요하지만 현재 CPU 사용량을 백분율로 제공 할 수 있습니다.
top
사용자, 시스템 프로세스 및 nice
프로세스 간에 CPU 사용량을 분할하므로이 세 가지의 합이 필요합니다. 따라서 출력 모드를 파싱 할 수 top
있는 b
atch 모드 에서 실행할 수 있습니다 . 그러나 여기 에서 설명한 것처럼 첫 번째 반복 반복은 top -b
부팅 이후 백분율 을 반환하므로 -n 2
현재 백분율을 얻으려면 적어도 두 번의 반복 ( )이 필요합니다 . 작업 속도를 높이기 d
위해 반복 간격을로 설정할 수 있습니다 0.01
. 마지막으로 grep
CPU 백분율을 포함하는 행을 사용 gawk
하여 사용자, 시스템 및 멋진 프로세스를 합산 하는 데 사용 합니다.
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
ps -o pcpu ax
실행중인 각 프로세스의 % use를 추가 하여이 정보를 얻을 수도 있다고 생각했습니다 . 불행히도, 여기 에 설명 된대로 , ps
"프로세스의 전체 수명 동안 실행에 소요 된 시간의 백분율을 반환합니다."는 필요하지 않습니다.
편집하다
귀하의 의견에 따라 귀하의 버전이 top
내 것과 다르므로 대신 이것을 사용해야합니다.
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
그리고 현지화 문제를 피하려면 로케일을 C로 설정하십시오.
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'