很多情况下查看linux服务器网络当前带宽都需要用到类似vnstat,ifstat,bmon,nload,iftop这些软件来查看,但是比较严谨的管理员都会遵守一个原则,不是需要用到的服务或者软件都不装,使系统最小化,运行状态最佳化.
所以就有了下面这个linux下用脚本监测网卡流量的脚本:
#!/bin/bash
#linux下用脚本监测网卡流量 by:fcbu.com
echo -n "请输入需要查询的网卡的接口:"
read eth
echo "你要查询的网卡接口为"$eth
echo -n "输入需要等到的时间(秒):"
read sec
echo "你计算的是"$sec"秒内的平均流量"
infirst=$(awk '/'$eth'/{print $1 }' /proc/net/dev |sed 's/'$eth'://')
outfirst=$(awk '/'$eth'/{print $10 }' /proc/net/dev)
sumfirst=$(($infirst $outfirst))
sleep $sec"s"
inend=$(awk '/'$eth'/{print $1 }' /proc/net/dev |sed 's/'$eth'://')
outend=$(awk '/'$eth'/{print $10 }' /proc/net/dev)
sumend=$(($inend $outend))
sum=$(($sumend-$sumfirst))
ksum=$(($sum/8/1024))
echo $sec"秒内总流量为:"$sum"bytes" "=" $ksum"M"
aver=$(($sum/$sec))
kaver=$(($aver/8/1024))
echo "平均流量为:"$aver"bytes/sec" "=" $kaver"M/s"
将上面shell代码保存为netview.sh
然后修改权限 chmod 755 netview.sh
需要查看带宽的时候执行这个脚本就行了,如下:
[root@localhost shellscript]# ./netview.sh
请输入需要查询的网卡的接口:eth0
你要查询的网卡接口为eth0
输入需要等到的时间(秒):10
你计算的是10秒内的平均流量
10秒内总流量为:3543373bytes = 432M
平均流量为:354337bytes/sec = 43M/s
时间是可以随意调整的,这个脚本有两个作用,一个是可以看你定义的时间段内总流量是多少,也可以看这个时间段内的平均流量是多少.
代码很简单,大家可以随意使用或者拿去修改扩充功能.