无标题文章

文章目的

用脚本程序读取网络接口的吞吐量并用统计图形表示出于项目需要,要将linux系统中各个网络接口的吞吐量实时显示,并以时间为横轴吞吐量为纵轴画出曲线图,从而便于分析给定时间段内各个接口的网络特性和状态。

预备知识

在linux系统中,网络接口上传和下载的吞吐量记录在/proc/net/dev 文件中,这个文件是根据网络状态实时更新的。利用grep命令可以读取指定文件中含有特定字符的一行利用cut命令结合grep可以选取一行中特定的字符打印出来再结合tee命令可以将终端命令行的打印信息重定向到txt或ods等文档*脚本程序类似于windows中的批处理文件,可以将各种命令集成到脚本中,并且可以加上判断、循环、选择等语句,具有偏自然语言、语法简单、无需编译、执行高效等优点。3.实现方法
有了以上的预备知识,就可以正式开始脚本程序的编写了。这里难点在于如何每隔一秒读取一次dev中的各个网络接口的吞吐量。一开始想到用crontab实现,可以设置想要的时间间隔,但是cron的技术实现有点复杂。后来想到在脚本里面用一个for循环,在每次循环中加一个sleep 1暂停指令执行一秒,这样不就实现了吗?!主要的程序代码如下:

以上脚本程序可以持续100秒将各网络接口的吞吐量打印出来,并在终端显示。执行脚本用以下命令#./read_itf.sh | tee read_itf.ods其中read_itf.ods是笔者预先创建的,用于保存吞吐量的表格文件。重定向在这就可以根据数据画出统计图形。需要注意的是重定向过来的是按列显示的,eth0/wlan0/wlan1为一组数据,按照时间从上到下排列,一共100组。因此数据有点乱,需要把数据按行排列,使得横向表示时间,纵向表示接口。笔者是用比较笨的办法,手工剪切的,如果有更方便的技巧,欢迎各位留言。 (∩_∩) 好的,现在只差最后一步,画出统计图形了,基本原理就跟excel中画图相似,这里不再赘述。最后粘上画出的两个网络接口在1~14s内的网络吞吐量。
无标题文章_第1张图片
无标题文章_第2张图片

怎样?是不是有论文中专业图表的感觉了,你也照着试试看吧!

你可能感兴趣的:(无标题文章)