shell脚本利用gnuplot绘制图片

简介:

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

catprocessX_CPU_Usage.log

  1. WedOct1614:47:35CST2013:ProcessCPUsage(%)Total

  2. WedOct1614:47:37CST2013:1828172008

  3. WedOct1614:47:39CST2013:1828171706

  4. WedOct1614:47:42CST2013:1828121689

  5. WedOct1614:47:44CST2013:1828211673

  6. WedOct1614:47:46CST2013:1828151668

  7. WedOct1614:47:48CST2013:182881699

  8. WedOct1614:47:50CST2013:1828171699

  9. WedOct1614:47:53CST2013:1828172148

  10. WedOct1614:47:55CST2013:1828151815

  11. WedOct1614:47:57CST2013:1828321727

  12. WedOct1614:47:59CST2013:1828111669

  13. WedOct1614:48:01CST2013:182841667

  14. WedOct1614:48:03CST2013:182881678

  15. WedOct1614:48:05CST2013:1828161694

  16. WedOct1614:48:08CST2013:182891669

  17. WedOct1614:48:10CST2013:1828261750

  18. WedOct1614:48:12CST2013:182861792

  19. WedOct1614:48:14CST2013:1828141720

  20. WedOct1614:48:17CST2013:1828121800

  21. WedOct1614:48:19CST2013:1828241921

  22. WedOct1614:48:21CST2013:1828111749

  23. WedOct1614:48:23CST2013:182891708

  24. WedOct1614:48:25CST2013:1828151665

  25. WedOct1614:48:27CST2013:182831751

  26. WedOct1614:48:30CST2013:1828101692

  27. WedOct1614:48:32CST2013:1828151678

  28. WedOct1614:48:34CST2013:1828191708

  29. WedOct1614:48:36CST2013:1828141707

  30. WedOct1614:48:38CST2013:1828151680

  31. WedOct1614:48:40CST2013:1828181678

我们看到了输出是这么个情况,我们希望绘制一张简单的图片,把CPUusage的情况绘制出来:每一行的第八列是我们想要的数据,我们可以绘制一个时间序列:

manu@manu-hacks:~/code/shell/gnuplot$catwork.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
file =$1
field=$2
yfield=` cat  $ file  | awk  '{if(NR==1) print $' '' $field '' '}' `
title=` basename  $ file `
if  [ $ # -eq 2 ]
then
echo  "
set  terminal pngcairo lw 2
set  title \"$title\"
set  ylabel \"$yfield\"
set  output  './output/$title-$yfield.png'
plot \"$ file \" using $field w lp pt 7 title \"$yfield\"
set  output
set  terminal wxt
" | gnuplot
fi

我这个方法比较简单,title就是数据来源的文件名字,ylabel是字段名字,实际上,由用户输入titleylabel以及图例的title会更加合适。我这只是一个简单的sample,来分享如何在shell脚本利用gnuplot绘制图片。
使用命令如下:

./work.sh/home/manu/processX_CPU_Usage.log8

输出图片如下:
24774106_1382453525d746.png
我这是一个简单的例子,实际上,我们实际可能会跑出来40个进程的CPU使用情况,我们可以将参数写入配置文件,然后每一行去执行work.sh,这样的话,我们就可以直接维护配置文件就可以了。当然了,我的脚本还很简陋很粗糙粗,远远不能在工程中实际使用。毕竟是晚上捣鼓出来的小玩意儿。

本文转自大角牛博客51CTO博客,原文链接http://blog.51cto.com/jingshengsun888/1313918如需转载请自行联系原作者


运维的戏子

相关文章
|
22天前
|
Java Shell Linux
使用 sh -x 进行 shell 脚本调试
使用 sh -x 进行 shell 脚本调试
33 9
使用 sh -x 进行 shell 脚本调试
|
2天前
|
监控 关系型数据库 MySQL
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
|
12天前
|
存储 Shell 应用服务中间件
[ansible]wget批量调用shell脚本
[ansible]wget批量调用shell脚本
|
15天前
|
运维 监控 Shell
掌握100个开箱即用的Shell脚本~(附PDF)
Shell脚本是实现Linux系统管理及自动化运维所必备的重要工具。许多其它岗位的小伙伴也经常使用Shell脚本来实现某项需求。 今天分享《100个shell脚本案例》,共有55页,支持文字搜索定位,代码清晰可复制。
|
22天前
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
29 3
|
1月前
|
JavaScript 前端开发 Shell
Shell 脚本编程保姆级教程(上)
Shell 脚本编程保姆级教程(上)
|
1月前
|
Shell Linux C语言
|
1月前
|
Shell 网络安全
shell脚本 配饰ssh
【7月更文挑战第15天】
23 4
|
1月前
|
网络协议 Shell Linux
Shell脚本配置Centos静态ip地址
这是一个用于在CentOS上设置静态IP的Shell脚本摘要: - 脚本交互式获取用户输入的IP地址、子网掩码、网关和DNS。 - 使用`sed`命令动态更新`/etc/sysconfig/network-scripts/ifcfg-ENS33`配置文件。 - 修改`BOOTPROTO`为`static`,并设置IP、NETMASK、GATEWAY和DNS1字段。 - 用`systemctl restart network`重启网络服务。 - 提示用户新配置的静态IP信息。
|
1月前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。