345 words
2 minutes
实时查看linux网卡流量

将下列脚本保存为可执行脚本文件,比如叫traff.sh。☺️

#!/bin/bash
while true
do
eth=$1
RXpre=$(cat /proc/net/dev | grep "$eth" | tr : " " | awk '{print $2}')
TXpre=$(cat /proc/net/dev | grep "$eth" | tr : " " | awk '{print $10}')
sleep 1
RXnext=$(cat /proc/net/dev | grep "$eth" | tr : " " | awk '{print $2}')
TXnext=$(cat /proc/net/dev | grep "$eth" | tr : " " | awk '{print $10}')
clear
echo -e "\t RX `date +%H:%M:%S` TX"
RX=$((RXnext - RXpre))
TX=$((TXnext - TXpre))
format_speed() {
local value=$1
if [[ $value -lt 1024 ]]; then
echo "${value}B/s"
elif [[ $value -lt 1048576 ]]; then
awk "BEGIN {printf \"%.2fKB/s\", $value/1024}"
elif [[ $value -lt 1073741824 ]]; then
awk "BEGIN {printf \"%.2fMB/s\", $value/1048576}"
else
awk "BEGIN {printf \"%.2fGB/s\", $value/1073741824}"
fi
}
RX_FMT=$(format_speed $RX)
TX_FMT=$(format_speed $TX)
echo -e "$eth \t $RX_FMT \t $TX_FMT"
done
  1. 本脚本可自定义欲查看接口,精确到小数,并可根据流量大小灵活显示单位。
  2. 此脚本的采集间隔为1秒。
  3. 此脚本不需要额外再安装软件,可在急用情况下应付一下,比如临时想看一下是否有流量通过,大概为多少等。
  4. 一些流量查看软件由于计算的精确度不同,所以与此脚本显示的数值不可能一致,此脚本的显示结果与du meter对比过,相差很小。还有就是传输工具本身显示的传输速度并不准确。

用法为:

  1. chmod +x ./traff.sh 将文件改成可执行脚本。
  2. ./traff.sh eth0即可开始监看接口eth0流量,按ctrl+c退出。
实时查看linux网卡流量
https://blog.w23ta0.eu.org/posts/real-time-linux-network-traffic-monitoring/
Author
w23ta0
Published at
2013-01-26
License
CC BY-NC-SA 4.0