格式化top的批处理模式输出以进行绘图/绘图

时间:2017-10-16 19:49:57

标签: linux sorting awk sed cut

我以下列方式使用top来验证某个进程占用的CPU百分比:

while true; do printf "`date` : " >> /var/log/besclient_resourcemonitor.txt; top -bn1 | awk '/BESClient/ {print $9}' >> /var/log/besclient_resourcemonitor.txt ; sleep 20; done

这导致以下输出,截断:

Mon Oct 16 13:37:08 CDT 2017 : 0.0
Mon Oct 16 13:37:29 CDT 2017 : 0.0
Mon Oct 16 13:38:10 CDT 2017 : 1.3
Mon Oct 16 13:38:30 CDT 2017 : 0.0
Mon Oct 16 13:38:51 CDT 2017 : 0.0
Mon Oct 16 13:39:11 CDT 2017 : 1.9

我想尝试在gnuplot或Excel中绘制图形,但是我很难将数据正确排序,以便能够在X中加载日期/时间(第1-6列)并加载(最后作为Y.我尝试过使用cut,sed和awk,但必须遗漏一些东西。由于没有一个共同的分隔符,我相信这是令人困惑的削减。

你怎么去剥皮这只猫?顺便说一句,我喜欢猫,所以,没有猫在制作这个输出时受到伤害。

1 个答案:

答案 0 :(得分:0)

不确定gunplot是如何工作的,但如果你想要这样的数据(不想进一步处理)并且只是划定你提到的列是一个问题,那么你可以进一步使用awk如下,你可以将输出存储为csv和进一步在Excel中导入

awk 'BEGIN{FS=" : "; OFS=","}{print $1, $2}'

给出:

Mon Oct 16 13:37:08 CDT 2017,0.0
Mon Oct 16 13:37:29 CDT 2017,0.0
Mon Oct 16 13:38:10 CDT 2017,1.3
Mon Oct 16 13:38:30 CDT 2017,0.0
Mon Oct 16 13:38:51 CDT 2017,0.0
Mon Oct 16 13:39:11 CDT 2017,1.9

FS和OFS是字段分隔符和输出字段分隔符