Linux通过shell脚本计算网卡流量:
- #!/bin/bash
- #mysql 启动脚本
- #Author=ftqzy
- #Modified=2011-11-25
- #Version=1.0
- #function=通过/proc/net/dev文件记录一段时间内的数值差,求得平均值,分别得到一段内跑的流量和在该时间段内平均每秒跑的速度
- #System=CentOS 5.5 64bit
- echo -n
- "请输入需要查询的网卡的接口:"
- read eth
- echo "你要查询的网卡接口为"$eth
- echo -n
- "输入需要等到的时间(秒):"
- read sec
- echo "你计算的是"$sec"秒内的平均流量"
- #第一次读取网卡in与out的值,做为初始值
- #In流量初始值:
- in_=$(awk '/'$eth'/{print $1 }' /proc/net/dev |sed 's/'$eth'://')
- #Out流量初始值:
- out_=$(awk '/'$eth'/{print $9 }' /proc/net/dev)
- #第一次网卡流量总和:
- sum_=$(($in_ + $out_))
- #使脚本休息$sec秒,计算$sec秒中产生的流量
- sleep $sec"s"
- #第二次读取网卡in与out的值,使其与第一次读取的初始值相减得到在$sec秒中服务器所跑流量
- #In流量:
- _in=$(awk '/'$eth'/{print $1 }' /proc/net/dev |sed 's/'$eth'://')
- #Out流量:
- _out=$(awk '/'$eth'/{print $9 }' /proc/net/dev)
- #In与Out流量总和
- _sum=$(($inend+$outend))
- #在$sec秒中产生的流量:
- sum=$(($_sum - $sum_))
- echo
- $sec"秒内总流量为:"$sum"bytes"
- #求得在$sec秒内,平均每秒所跑流量:
- aver=$(($sum/$sec))
- echo
- "平均流量为:"$aver"bytes/sec"
转载于:https://blog.51cto.com/ftqzy/724484