说明:此脚本可以监控Linux系统下网卡流量,其中的注释信息本人用多个减号“-”划分开,为了方便这一块功能代码的表示。大家可以下载自己任意修改此脚本。本人属于一级笨鸟级别,希望大家能对脚本不足的地方给出评价。谢谢啦O(∩_∩)O~

 

#!/bin/bash
band () {
while true
do

rx1=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $2}')
tx1=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $10}')
sleep 1
rx2=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $2}')
tx2=$(cat /proc/net/dev | grep "eth0" | tr : " " | awk '{print $10}')

clear

rxdiffer=$(($rx2 - $rx1))
txdiffer=$(($tx2 - $tx1))

#-----------INT KB/MB------
RRXKB=$(($rxdiffer/1024))
TTXKB=$(($txdiffer/1024))
RRXMB=$(($RRXKB/1024))
TTXMB=$(($TTXKB/1024))
#-------------------------------

#sleep 1

#---------------precision KB/MB---------------------
RXKB=$(awk 'BEGIN {print ('$rxdiffer'/1024)}')
TXKB=$(awk 'BEGIN {print ('$txdiffer'/1024)}')
RXMB=$(awk 'BEGIN {print ('$RXKB/1024')}')
TXMB=$(awk 'BEGIN {print ('$TXKB/1024')}')

#+++other count precision method+++
#RXKB=$(echo "scale=2;${rxdiffer}/1024" | bc)
#TXKB=$(echo "scale=2;${txdiffer}/1024" | bc)
#++++++++++++++++++++++++++++++++++
#---------------------------------------------------

#---------judge KB/MB--------------
if [ $RRXKB -lt 1024 ]; then
 unit1="Kibp/s"
else
 unit1="Mibp/s"
 RXKB="$RXMB"
fi

if [ $TTXKB -lt 1024 ]; then
 unit2="Kibp/s"
else
        unit2="Mibp/s"
 TXKB="$TXMB"
fi
#-----------------------------------
#sleep 1

echo -e $(date +%T;echo "-";date +%F;echo ">";echo "bandwidth")
printf "\n"
echo "IN_bandwidth: $rxdiffer /Byte"
echo "OUT_bandwidth: $txdiffer /Byte"

#-------------------other input medthod-------------------

#echo -e $(date +%T)
#echo -e "------------------------------------------------"
#echo -e "\t IN_bandwidth \t\t OUT_bandwidth"
#echo -e "\t ${RXKB} /$unit1 \t\t ${TXKB} /$unit2"
#echo -e "------------------------------------------------"

#---------------------------------------------------------

printf "%s\n" "--------------------------------------------------"
printf "\t%s\t" "IN_Bandwidth"
printf "\t%s\t\n" "OUT_Bandwidth"
printf "  \n"
printf "   %10.2f /$unit1" "$RXKB"
printf "\t   %10.2f /$unit2\n" "$TXKB"
printf "%s\n" "--------------------------------------------------"
done
}
band