首页 / 操作系统 / Linux / 监控Linux流量Shell版
想要实时查看Linux流量情况,又不想再去下第三方工具,可以直接写脚步运行!系统:CentOS 6.5原理:从/proc/net/dev中获取到流量情况,再通过换算并除以间隔时间来得到流量单位M#------------------
#Author:Administrator
#Created:2015-04-10
#------------------
#!/bin/bash#使用方法
usage()
{
echo "useage: $0 ethname intervel"
exit 0
}#网口配置
if [ $# -gt 1 ];then
ethname=$1
num=`ifconfig|grep ${ethname}|wc -l`
if [ $num -gt 0 ];then
ethname=$1
else
echo "Can"t find $ethname,Please Check"
exit 1
fi
fi#时间配置
intervel=1
if [ $# -gt 0 ]; then
interval=$2
test=`expr "$interval" * 0`
if [ "$test" != "0" ]; then
echo "Invalid <interval> param "$interval" . It should be a integer number. Usage: $0 ethname intervel"
exit -1
fi
if [ $interval -lt 1 ]; then
echo "Invalid <interval> param "$interval" . It should be > 0 (seconds). Usage: $0 ethname intervel"
exit -1
fi
fi#函数判断
if [ $# -ne 2 ]
then
usage
fiecho "$0 is starting,Device is $1,Intervel is $2"
echo -e "
"typeset Rev old_Reveth=$1
intervel=$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"while true
do
sleep $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=$Send
done本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-11/125151.htm