如何编写Shell脚本以从sar报告中获取最小值和平均值

时间:2017-07-28 13:31:52

标签: bash shell

e.g。

    public LocationUrlMaskMapping()
    {
        Schema("dbo");

        Id(x => x.Id).GeneratedBy.Assigned();
        Map(x => x.CfgId);

        Table("LocationUrlMasks");

        References(m => m.Location, "LocationID");
    }

我想编写一个shell脚本,该脚本从此报告中获取内存和CPU利用率一天的最小值和平均值,并将其安排在crontab中。

2 个答案:

答案 0 :(得分:0)

awk可以做到这一点。计算user列(第四列)平均值的示例:

tail -n +2 data.txt | awk '{n += 1; user += $4} END {printf("%lf\n", user / n)}'

答案 1 :(得分:0)

scriptfile:

NR == 1 {
    tit=$8
} 
NR > 1 {
        tot+=$8
        if ( $8 > max ) {
                max=$8
        }
        if ( NR == 2 ) {
                min = $8
        }
        else if ( $8 < min ) {
                min = $8
        }
}
END {
        avg=tot/(NR-1)
        print tit"=====total - "tot" max - "max" min - "min" average - "avg
}

然后运行:

awk -f scriptfile filename   

输出:

%steal=====total - 3.24 max - 0.95 min - 0.19 average - 0.462857

在awk脚本中,我们通过规定大于1的数字记录来忽略第一行。然后我们设置min,max和total值。当数字记录为1​​时,我们使用数据来设置标题。在文件的最后,我们计算出平均总数。

此示例中的脚本查看%steal(第8个空格分隔字段),但它当然可以根据我们关注的列进行修改。