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脚本将产生以下结果:

在此输入图像描述

相关内容