admin 管理员组

文章数量: 1184232

Linux查看实时网速的shell

What

这是一个可以查看Linux主机实时网速的shell脚本,它能够根据网速自动调整单位以便更好的显示网速。

Why

在工作过程中,会遇到服务器非常卡顿的情况,因为服务器是多人同时使用的,为了全面的分析服务器卡顿的原因,依次检查了CPU、内存、磁盘IO的情况,但是都没有发现明显异常,故想到了诊断网络,以便综合判断服务器状态,于是诞生了这个Shell

How

基本使用方法

./net.sh [网卡]

例如:查看网卡eth0的网速:

./net.sh eth0

开启DEBUG

这里仅提供通过修改源码的方式开启DEBUG模式,具体方式为:
对脚本中的DEBUG变量赋任意值

DEBUG=true

Source Code

如需转载,请说明出处

#!/bin/bash#net.sh# about# 此shell用于显示实时网速# author:masterc# date:2021.03.19# version:1.0# 如需开启DEBUG,给DEBUG赋任意值即可
DEBUG=# 计算网速function getRate(){
    rate=$1
    result="${rate}"if[${rate} -gt 1024 ];then
        rate=`expr ${rate} / 1024`
        rate_p=`expr ${rate} % 1024`
        result="${rate}.${rate_p}"fiecho$result}# 计算量程function getUnit(){
    rate=$1
    result="KB/s"if[$rate -gt 1024 ];then
      result="MB/s"fiecho$result}function main(){# 要监听的网卡
    net_card=$1if[!$net_card];thenecho"net card is not selected!"elseecho"net card:$net_card"fi#初始化# awk 'NR==8{print}' : 取ifconfig结果的第8行,可根据ifconfig结果做具体调整# awk -F '[(:]' '{print $4}' : 取上传字节数# awk -F '[(:]' '{print $2}' : 取下载字节数
    up_rate1=`ifconfig $net_card |awk'NR==8{print}'|awk -F '[(:]''{print $4}'`
    down_rate1=`ifconfig $net_card |awk'NR==8{print}'|awk -F '[(:]''{print $2}'`
    up_rate2=0
    down_rate2=0
    whiletruedosleep 1
        up_rate2=`ifconfig $net_card |awk'NR==8{print}'|awk -F '[(:]''{print $4}'`
        down_rate2=`ifconfig $net_card |awk'NR==8{print}'|awk -F '[(:]''{print $2}'`# DEBUGif[$DEBUG];thenecho"up_rate1:${up_rate1},down_rate1:${down_rate1}"echo"up_rate2:${up_rate2},down_rate2:${down_rate2}"fi# 取差值
        up_rate=`expr $up_rate2 - $up_rate1`
        down_rate=`expr $down_rate2 - $down_rate1`# 记录旧值
        up_rate1=$up_rate2
        down_rate1=$down_rate2# 单位转换 B -> KB
        up_rate=`expr $up_rate / 1024`
        down_rate=`expr $down_rate / 1024`# \r用于每次输出后将光标重新定位到开头printf"\r[UP:%6.1f %s,DOWN:%6.1f %s]"`getRate $up_rate``getUnit $up_rate``getRate $down_rate``getUnit $down_rate`done}
main $@

本文标签: 节数 网速的 编程