Linux에서 전체적인 CPU 사용률(57%)을 얻는 방법
예를 들어 bash를 사용하여 시스템 CPU 사용률을 퍼센트로 표시하는 방법을 알고 싶습니다.
샘플 출력:
57%
코어가 여러 개 있는 경우, 평균 비율을 계산할 수 있으면 좋겠습니다.
, 그럼 ㄴㄴㄴ데를 한 번 보세요.cat /proc/stat
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'
편집은 복사 붙여넣기 전에 또는 중요한 작업에 사용하기 전에 댓글을 읽어주세요.이것은 테스트도, 사용도 아니고, 유틸리티를 인스톨 하고 싶지 않은 유저나, 어떠한 배포에서도 동작하는 것을 목적으로 한 아이디어입니다.어떤 사람들은 당신이 어떤 것이든 "apt-get install" 할 수 있다고 생각합니다.
메모: 이는 현재 CPU 사용률이 아니라 시스템 부팅 후 모든 코어의 CPU 사용률입니다.이는 현재 CPU 사용량과 크게 다를 수 있습니다.전류 값 top(또는 유사한 도구)을 사용해야 합니다.
현재 CPU 사용률은 다음과 같이 계산할 수 있습니다.
awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' \
<(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)
다음 작업을 수행할 수 있습니다.
top -bn1 | grep "Cpu(s)" | \
sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \
awk '{print 100 - $1"%"}'
★★를 해 보세요.mpstat sysstat
> sudo apt-get install sysstat
Linux 3.0.0-13-generic (ws025) 02/10/2012 _x86_64_ (2 CPU)
03:33:26 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:33:26 PM all 2.39 0.04 0.19 0.34 0.00 0.01 0.00 0.00 97.03
어떤 사람은cut ★★★★★★★★★★★★★★★★★」grep「 」 「 」 보석 :
mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a
Peter Liljenberg의 작품에서 영감을 얻은 제 솔루션으로 실제 반응을 토해내는 것과 같습니다.
$ mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12"%" }'
0.75%
은 「」를 사용합니다.awk를 뺀 후 출력합니다. awk는, 필드에 행(즉, 12번째 필드)에만 이 를 실시합니다.$12 ~ /[0-9]+/를 참조해 주세요.
또한 1초 간격으로 5개의 표본을 평균화할 수 있습니다.
$ mpstat 1 5 | awk 'END{print 100-$NF"%"}'
다음과 같이 테스트합니다.
$ mpstat 1 5 | tee /dev/tty | awk 'END{print 100-$NF"%"}'
편집: 다른 사용자의 응답에서 %idle이 필드 11이 아닌 필드 12임을 알 수 있었습니다.awk는 %idle 필드가 가변적인 것을 고려하도록 업데이트되었습니다.
그러면 원하는 출력이 나타납니다.
mpstat | awk '$3 ~ /CPU/ { for(i=1;i<=NF;i++) { if ($i ~ /%idle/) field=i } } $3 ~ /all/ { print 100 - $field }'
단순 정수 반올림을 원하는 경우 printf를 사용할 수 있습니다.
mpstat | awk '$3 ~ /CPU/ { for(i=1;i<=NF;i++) { if ($i ~ /%idle/) field=i } } $3 ~ /all/ { printf("%d%%",100 - $field) }'
전체 CPU 사용률을 확인하려면 이 작업을 수행합니다.이 콜은python3크로스 플랫폼모듈을 사용합니다.
printf "%b" "import psutil\nprint('{}%'.format(psutil.cpu_percent(interval=2)))" | python3
interval=2하도록 되어 있습니다.part 2는 CPU의 부하를 측정합니다.
샘플 출력:
9.4%
여기에 포함된 python 프로그램은 다음과 같습니다.
import psutil
print('{}%'.format(psutil.cpu_percent(interval=2)))
★★의 time이 경우 지정된 인터벌 시간 약 2초가 걸린다는 것을 증명합니다.콜과 출력을 다음에 나타냅니다.
$ time printf "%b" "import psutil\nprint('{}%'.format(psutil.cpu_percent(interval=2)))" | python3
9.5%
real 0m2.127s
user 0m0.119s
sys 0m0.008s
각각의 코어에 대한 출력도 보려면 아래의 파이썬 프로그램을 사용합니다.먼저 "CPU당" 정보의 python 목록(어레이)을 얻은 다음 해당 목록의 모든 항목의 평균을 계산하여 "총 % CPU" 유형 값을 얻습니다.그 후, 합계 코어 퍼센트와 개개의 코어 퍼센트를 인쇄합니다.
Python 프로그램:
import psutil
cpu_percent_cores = psutil.cpu_percent(interval=2, percpu=True)
avg = sum(cpu_percent_cores)/len(cpu_percent_cores)
cpu_percent_total_str = ('%.2f' % avg) + '%'
cpu_percent_cores_str = [('%.2f' % x) + '%' for x in cpu_percent_cores]
print('Total: {}'.format(cpu_percent_total_str))
print('Individual CPUs: {}'.format(' '.join(cpu_percent_cores_str)))
이렇게 보기 흉한 한 줄의 bash 스크립트로 정리할 수 있습니다.반드시 작은 해야 했다.''( , )가 아닙니다.""을 수행합니다.
printf "%b" \
"\
import psutil\n\
cpu_percent_cores = psutil.cpu_percent(interval=2, percpu=True)\n\
avg = sum(cpu_percent_cores)/len(cpu_percent_cores)\n\
cpu_percent_total_str = ('%.2f' % avg) + '%'\n\
cpu_percent_cores_str = [('%.2f' % x) + '%' for x in cpu_percent_cores]\n\
print('Total: {}'.format(cpu_percent_total_str))\n\
print('Individual CPUs: {}'.format(' '.join(cpu_percent_cores_str)))\n\
" | python3
출력 예: 8개의 코어가 있으므로 "개별 CPU:" 뒤에 8개의 숫자가 있습니다.
Total: 10.15%
Individual CPUs: 11.00% 8.50% 11.90% 8.50% 9.90% 7.60% 11.50% 12.30%
python 콜의 동작의 상세한 것에 대하여는, 다음의 공식 문서를 참조해 주세요.
psutil.cpu_percent(interval=None, percpu=False)현재 시스템 전체의 CPU 사용률을 백분율로 나타내는 플로트를 반환합니다.> interval인 경우
0.0에, 인터벌(블로킹)의 전후로 경과한 시스템 CPU 시간을 비교합니다.이 「」인0.0★★★★★★★★★★★★★★★★★」None는 마지막 콜 또는 모듈을 Import한 후 경과한 시스템 CPU 시간을 비교하여 즉시 반환됩니다.은 이것이 때 것이 된다는 것을 합니다.0.0무시해야 할 값입니다. 이 할 것을 합니다.0.1일 의 첫 첫 번째 두 번째 는 두 번째 및 등등입니다.percpu True는 CPU입니다.목록의 첫 번째 요소는 첫 번째 CPU를 가리키고 두 번째 요소는 두 번째 CPU를 가리킵니다.리스트의 순서는, 콜간에 일치합니다.경고: 이 함수가 간격 =(으)로 처음 호출될 때
0.0★★★★★★★★★★★★★★★★★」None0.0무시해야 할 값입니다.
더 나아가다:
eRCaGuy_dotfiles repo의 cpu_logger.py 스크립트에서 위의 코드를 사용합니다.
참고 자료:
- 스택 오버플로:Python에서 현재 CPU 및 RAM 사용량을 얻는 방법은 무엇입니까?
- 스택 오버플로:한 줄 명령줄에서 여러 줄의 문을 실행하시겠습니까?
- 소수점 두 자리로 플로트를 표시하는 방법은 무엇입니까?
- 목록의 평균 찾기
관련된
- https://unix.stackexchange.com/questions/295599/how-to-show-processes-that-use-more-than-30-cpu/295608#295608
- https://askubuntu.com/questions/22021/how-to-log-cpu-load
언급URL : https://stackoverflow.com/questions/9229333/how-to-get-overall-cpu-usage-e-g-57-on-linux
'programing' 카테고리의 다른 글
| SQL Server 연결 문자열에서 "초기 카탈로그"의 요점은 무엇입니까? (0) | 2023.04.23 |
|---|---|
| 파일에서 발생하는 모든 문자열을 PowerShell로 대체하려면 어떻게 해야 합니까? (0) | 2023.04.23 |
| 오류: 찾고 있는 리소스가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수 없습니다. (0) | 2023.04.23 |
| 방법 옆의 목표 C에서 더하기 기호와 빼기 기호는 무엇을 의미합니까? (0) | 2023.04.23 |
| Git에서 비활성 리모트 브랜치 참조를 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.23 |