娱乐新地带论坛

娱乐新地带论坛 (https://bbs.1819.net/index.php)
-   『网络家园』 (https://bbs.1819.net/forumdisplay.php?f=13)
-   -   实时查看linux网卡流量 (https://bbs.1819.net/showthread.php?t=79165)

Tony 2019-08-27 03:40 PM

实时查看linux网卡流量
 
将下列脚本保存为可执行脚本文件,比如叫traff.sh。

1、本脚本可自定义欲查看接口,精确到小数,并可根据流量大小灵活显示单位。
2、此脚本的采集间隔为1秒。
3、此脚本不需要额外再安装软件,可在急用情况下应付一下,比如临时想看一下是否有流量通过,大概为多少等。
4、一些流量查看软件由于计算的精确度不同,所以与此脚本显示的数值不可能一致,此脚本的显示结果与du meter对比过,相差很小。还有就是传输工具本身显示的传输速度并不准确。
用法为:
1、chmod +x ./traff.sh 将文件改成可执行脚本。
2、./traff.sh eth0即可开始监看接口eth0流量,按ctrl+c退出。
代码:

#!/bin/bash 
while [ "1" ] 
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 +%k:%M:%S` TX" 
RX=$((${RXnext}-${RXpre})) 
TX=$((${TXnext}-${TXpre})) 
 
if [[ $RX -lt 1024 ]];then 
RX="${RX}*8bps" 
elif [[ $RX -gt 1048576 ]];then 
RX=$(echo $RX | awk '{print $1/1048576*8 "Mbps"}') 
else 
RX=$(echo $RX | awk '{print $1/1024*8 "Kbps"}') 
fi 
 
if [[ $TX -lt 1024 ]];then 
TX="${TX}*8bps" 
elif [[ $TX -gt 1048576 ]];then 
TX=$(echo $TX | awk '{print $1/1048576*8 "Mbps"}') 
else 
TX=$(echo $TX | awk '{print $1/1024*8 "Kbps"}') 
fi 
 
echo -e "$eth \t $RX  $TX " 
done


Tony 2019-08-27 07:00 PM

更方便的方法,Linux查看当前网卡流量
sar –n DEV 1 2
命令后面1 2 意思是:每一秒钟取1次值,取2次。


所有时间均为北京时间。现在的时间是 04:32 AM

©2003-2024 1819.net All rights reserved. © 2024