CPU 사용량 출력 변환

CPU 사용량 출력 변환

이 명령의 출력을 ps aux | awk 'NR>1{tot[$3]++;} END{for(id in tot)printf "%s %s\n",id,tot[id]}'원형 차트로 변환하려면 어떻게 해야 합니까?

pie다음 스크립트를 사용하여 변경해 보았습니다.협회:

#!/bin/bash

cat <<"EOHD"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500" height="1000" >
<g transform="translate(120,120)">
EOHD
awk '
function rc(){r=rand()*255;g=rand()*255;b=rand()*255;}
BEGIN{srand(6);X=-90;Y=120;}
{   L[NR]=$1;S=S+$1;
    rc();
    printf("<rect x=\"%f\" y=\"%f\" width=\"20\" height=\"20\" fill=\"#%02x%02x%02x\" />\n",
           X,Y,r,g,b);
    #$1="";
    printf("<text x=\"%f\" y=\"%f\">%s</text>\n",X+30,Y+15,$0);
    Y+=25; }
END{srand(6);
    R=100;PX=R;PY=0;
    #PROCINFO["sorted_in"]="@ind_num_asc";
    #for(i in L){       # <--- See: http://xed.ch/blog/2016/1219.html
    for(i=1;i<=length(L);i++){
        T+=L[i]/S;
        A=T*6.283185307;
        L[i]>S/2?B=1:B=0;
        X=R*cos(A);Y=R*sin(A); rc()
        printf("<path d=\"M 0 0 %.6f %.6f A 100 100 0 %d 1 %.6f %.6f z\" fill=\"#%02x%02x%02x\" />\n",
               PX,PY,B,X,Y,r,g,b);
        PX=X;PY=Y;
        }
    }' -

echo "</g></svg>"

답변1

이 스크립트에 대한 올바른 입력은 두 개의 텍스트 열이므로 먼저 준비해야 합니다.

ps aux | tail -n +2 | sort -k 3nr | awk 'NR<8{print $2,$3}'

그러면 아래와 같이 CPU를 가장 많이 사용하는 PID 중 일부가 출력됩니다.

10.7 17786
5.5 808
2.5 21290
1.7 285
1.4 896
1.0 981
0.5 444

첫 번째 열에는 백분율이 표시되고 두 번째 열에는 PID가 나열됩니다. 이제 이를 pie스크립트에 파이프하면 다음과 같은 결과가 생성됩니다.

여기에 이미지 설명을 입력하세요.

관련 정보