查看Linux服务器网卡流量小脚本shell

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查看Linux服务器网卡流量小脚本shell相关的知识,希望对你有一定的参考价值。

    有时我们需要较为实时的查看服务器上的网卡流量,这里我写了个shell小脚本。脚本中用了while true“死循环”,每隔10s从“/proc/net/dev”中取一次值并根据10s内的差值计算10s内的平均带宽;按ctrl+c停止执行。脚本兼容centos6和7,脚本不太复杂,而且脚本中注释也比较细致,所以我就不过多解释脚本内容了。

注:1kb=8字节,1Mb=1024kb

#!/bin/sh
 
if [ "$1" = "" ];then    #判断后面是否有跟参数
    echo -e "\n      use interface_name after the script,like \"script eth0\"...\n"
    exit -1
fi
 
echo -e "\n      start monitoring the $1,press \"ctrl+c\" to stop"
echo ----------------------------------------------------------
 
file=/proc/net/dev    #内核网卡信息文件
while true
    do
    RX_bytes=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $2}‘`    #这里sed这一步为了同时兼容centos6和7
    TX_bytes=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $10}‘`
    sleep 10
    RX_bytes_later=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $2}‘`
    TX_bytes_later=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $10}‘`
 
    #B*8/1024/1024=Mb
    speed_RX=`echo "scale=2;($RX_bytes_later - $RX_bytes)*8/1024/1024/10"|bc`
    speed_TX=`echo "scale=2;($TX_bytes_later - $TX_bytes)*8/1024/1024/10"|bc`
 
    printf "%-3s %-3.1f %-10s %-4s %-3.1f %-4s\n" IN: $speed_RX Mb/s OUT: $speed_TX Mb/s
done

本文出自 “激情燃烧的岁月” 博客,请务必保留此出处http://liuzhengwei521.blog.51cto.com/4855442/1786936

以上是关于查看Linux服务器网卡流量小脚本shell的主要内容,如果未能解决你的问题,请参考以下文章

求一个linux将监控网卡出入流量的shell脚本,每隔设定的时间输出到文本或其他地方存储

LINUX下网卡流量持续监控查看shell脚本实践

使用简单的linux shell脚本统计网卡流量和带宽

30个Linux Shell脚本经典案例(中)

Linux常用的系统监控shell脚本

常见的shell脚本之一键查看服务器每秒发送和接收流量