Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1745454
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类: LINUX

2013-10-28 15:42:40

    我们都知道gnuplot可以绘制图片,但是时候,我们的数据是以date文件的形式存在,如何编写一个脚本帮助我们绘制出相应的图片:
   以某个进程的CPU使用情况为例:  
  1. cat processX_CPU_Usage.log

  2. Wed Oct 16 14:47:35 CST 2013:    Process    CPUsage(%)    Total
  3. Wed Oct 16 14:47:37 CST 2013:    1828    17    2008
  4. Wed Oct 16 14:47:39 CST 2013:    1828    17    1706
  5. Wed Oct 16 14:47:42 CST 2013:    1828    12    1689
  6. Wed Oct 16 14:47:44 CST 2013:    1828    21    1673
  7. Wed Oct 16 14:47:46 CST 2013:    1828    15    1668
  8. Wed Oct 16 14:47:48 CST 2013:    1828    8    1699
  9. Wed Oct 16 14:47:50 CST 2013:    1828    17    1699
  10. Wed Oct 16 14:47:53 CST 2013:    1828    17    2148
  11. Wed Oct 16 14:47:55 CST 2013:    1828    15    1815
  12. Wed Oct 16 14:47:57 CST 2013:    1828    32    1727
  13. Wed Oct 16 14:47:59 CST 2013:    1828    11    1669
  14. Wed Oct 16 14:48:01 CST 2013:    1828    4    1667
  15. Wed Oct 16 14:48:03 CST 2013:    1828    8    1678
  16. Wed Oct 16 14:48:05 CST 2013:    1828    16    1694
  17. Wed Oct 16 14:48:08 CST 2013:    1828    9    1669
  18. Wed Oct 16 14:48:10 CST 2013:    1828    26    1750
  19. Wed Oct 16 14:48:12 CST 2013:    1828    6    1792
  20. Wed Oct 16 14:48:14 CST 2013:    1828    14    1720
  21. Wed Oct 16 14:48:17 CST 2013:    1828    12    1800
  22. Wed Oct 16 14:48:19 CST 2013:    1828    24    1921
  23. Wed Oct 16 14:48:21 CST 2013:    1828    11    1749
  24. Wed Oct 16 14:48:23 CST 2013:    1828    9    1708
  25. Wed Oct 16 14:48:25 CST 2013:    1828    15    1665
  26. Wed Oct 16 14:48:27 CST 2013:    1828    3    1751
  27. Wed Oct 16 14:48:30 CST 2013:    1828    10    1692
  28. Wed Oct 16 14:48:32 CST 2013:    1828    15    1678
  29. Wed Oct 16 14:48:34 CST 2013:    1828    19    1708
  30. Wed Oct 16 14:48:36 CST 2013:    1828    14    1707
  31. Wed Oct 16 14:48:38 CST 2013:    1828    15    1680
  32. Wed Oct 16 14:48:40 CST 2013:    1828    18    1678
    我们看到了输出是这么个情况,我们希望绘制一张简单的图片,把CPU usage的情况绘制出来:每一行的第八列是我们想要的数据,我们可以绘制一个时间序列:
  1. manu@manu-hacks:~/code/shell/gnuplot$ cat work.sh
  2. #!/bin/sh

  3. file=$1
  4. field=$2
  5. yfield=`cat $file |awk '{if(NR==1) print $'''$field'''}'`
  6. title=`basename $file`


  7. if [ $# -eq 2 ]
  8. then

  9.     echo "
  10.     set terminal pngcairo lw 2
  11.     set title \"$title\"
  12.     set ylabel \"$yfield\"
  13.     set output './output/$title-$yfield.png'
  14.     plot \"$file\" using $field w lp pt 7 title \"$yfield\"
  15.     set output
  16.     set terminal wxt
  17.     " | gnuplot
  18. fi
    我这个方法比较简单,title就是数据来源的文件名字,ylabel是字段名字,实际上,由用户输入title ylabel 以及图例的title会更加合适。我这只是一个简单的sample,来分享如何在shell脚本利用gnuplot绘制图片。
   使用命令如下:
  1. ./work.sh /home/manu/processX_CPU_Usage.log 8
    输出图片如下:
   
   我这是一个简单的例子,实际上,我们实际可能会跑出来40个进程的CPU使用情况,我们可以将参数写入配置文件,然后每一行去执行work.sh,这样的话,我们就可以直接维护配置文件就可以了。当然了,我的脚本还很简陋很粗糙粗,远远不能在工程中实际使用。毕竟是晚上捣鼓出来的小玩意儿。

参考文献:
1 使用gnuplot科学画图 马欢

阅读(350) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~