Linux 명령 행에서 CPU 사용량을 얻는 데 사용할 수있는 방법은 무엇입니까? [닫은]

우리는 이것이 top리눅스에서 CPU 사용을 얻는 명령이며 다른 방법으로는 cat /proc/stattop이 사용하는 것을 포함
합니다.

Linux 명령 행에서 CPU 사용량을 얻는 다른 방법은 무엇입니까?

사용 사례 시나리오 : 이 명령의 출력은 스크립트에서 CPU 사용량을 지속적으로 기록하는 데 사용됩니다. top/proc/stat로그인하기 어려운 자세한 사용법을 제공합니다. CPU 정보를 얻는 더 쉬운 방법이 있습니까?



답변

다른 사람들이 말했듯이 가장 좋은 방법은 아마입니다 top. 약간의 조정과 약간의 구문 분석이 필요하지만 현재 CPU 사용량을 백분율로 제공 할 수 있습니다.

top사용자, 시스템 프로세스 및 nice프로세스 간에 CPU 사용량을 분할하므로이 세 가지의 합이 필요합니다. 따라서 출력 모드를 파싱 할 수 top있는 batch 모드 에서 실행할 수 있습니다 . 그러나 여기 에서 설명한 것처럼 첫 번째 반복 반복은 top -b부팅 이후 백분율 을 반환하므로 -n 2현재 백분율을 얻으려면 적어도 두 번의 반복 ( )이 필요합니다 . 작업 속도를 높이기 d위해 반복 간격을로 설정할 수 있습니다 0.01. 마지막으로 grepCPU 백분율을 포함하는 행을 사용 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 초마다 통계를 수집합니다.


답변