想要实时查看linux流量情况,又不想再去下第三方工具,可以直接写脚步运行!
系统:centos 6.5
原理:从/PRoc/net/dev中获取到流量情况,再通过换算并除以间隔时间来得到流量单位M
#------------------#Author:Administrator
#Created:2015-04-10#------------------#!/bin/bash
#使用方法
usage()
{echo"useage: $0 ethname intervel"exit0}
#网口配置if[ $# -gt1];thenethname=$1num=`ifconfig|grep${ethname}|wc-l`if[ $num -gt0];thenethname=$1elseecho"Can't find $ethname,Please Check"exit1fifi#时间配置
intervel=1if[ $# -gt0];theninterval=$2test=`expr"$interval"\*0`if["$test"!="0"];thenecho"Invalid <interval> param '$interval' . It should be a integer number. Usage: $0 ethname intervel"exit-1fiif[ $interval -lt1];thenecho"Invalid <interval> param '$interval' . It should be > 0 (seconds). Usage: $0 ethname intervel"exit-1fifi#函数判断if[ $# -ne2]thenusagefiecho"$0 is starting,Device is $1,Intervel is $2"echo-e"\n"typeset Rev old_Rev
eth=$1intervel=$2old_Rev=`cat
/proc/net/dev|grep$eth|awk'{print $1}'|awk-F :'{print $2}'`
old_Send=`cat
/proc/net/dev|grep$eth|awk'{print $9}'`
#echo"old_Rev is $old_Rev"#echo"Old_send is $old_Send"whiletruedosleep$intervel
Rev=`cat
/proc/net/dev|grep$eth|awk'{print $1}'|awk-F :'{print $2}'`
Send=`cat
/proc/net/dev|grep$eth|awk'{print $9}'`
#echo"Rev is $Rev"#echo"Send is $Send"diff_1=`awk-v Rev=$Rev -v old_Rev=$old_Rev -v intervel=$intervel'BEGIN{printf "Receive is %6.2f", ( Rev - old_Rev ) / 1024 / 1024 / intervel * 8}'`
diff_2=`awk-v Send=$Send -v old_Send=$old_Send -v intervel=$intervel'BEGIN{printf "Send is %6.2f", ( Send - old_Send ) / 1024 / 1024 / intervel * 8}'`echo"`date +'%Y-%m-%d %H:%M:%S'` Speed: IN ${diff_1} mbps OUT ${diff_2} mbps"old_Rev=$Rev
old_Send=$Senddone
效果如下:
[root@localhost tools]# ./bandwidth.sheth01./bandwith.shis starting,Device is eth0,Intervel is1Ctrl+C To Stop!2015-11-1316:49:34Speed: IN Receive is0.02mbps OUT Send is0.01mbps2015-11-1316:49:35Speed: IN Receive is0.01mbps OUT Send is0.00mbps2015-11-1316:49:36Speed: IN Receive is0.01mbps OUT Send is0.00mbps
如使用有问题,请联系:
362299908@QQ.com