우리는 이것이 top
리눅스에서 CPU 사용을 얻는 명령이며 다른 방법으로는 cat /proc/stat
top이 사용하는 것을 포함
합니다.
Linux 명령 행에서 CPU 사용량을 얻는 다른 방법은 무엇입니까?
사용 사례 시나리오 : 이 명령의 출력은 스크립트에서 CPU 사용량을 지속적으로 기록하는 데 사용됩니다. top
및 /proc/stat
로그인하기 어려운 자세한 사용법을 제공합니다. CPU 정보를 얻는 더 쉬운 방법이 있습니까?
답변
다른 사람들이 말했듯이 가장 좋은 방법은 아마입니다 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}'
답변
sar
그것을하는 확실한 방법입니다. 예를 들어 sar -u
다음과 같이 출력됩니다.
08:30:01 AM CPU %user %nice %system %iowait %idle
08:40:01 AM all 6.94 0.00 1.77 4.92 86.36
08:50:01 AM all 5.73 0.00 2.31 12.72 79.24
09:00:01 AM all 5.95 0.00 2.58 18.36 73.11
09:10:01 AM all 6.88 0.00 2.22 17.44 73.45
09:20:01 AM all 8.61 0.00 2.68 27.93 60.78
어떤 Linux를 사용하는지 말하지 않지만 CentOS / RedHat의 경우 sysstat
패키지 를 설치해야하며 데비안 / 우분투에서도 동일하다고 생각합니다.
또한 통계 수집 SAR를 사용할 수있는 임시을 :
sar -o /tmp/sar.out 60 600
600 초마다 60 초마다 60 초마다 통계를 수집합니다.