您的位置:首页 > 理论基础 > 计算机网络

如何在Linux下统计高速网络中的流量

2016-09-27 09:04 585 查看
参考:
http://www.geekfan.net/5558/
http://blog.jobbole.com/23638/
http://www.csdn.net/article/2014-03-05/2818640-internet-of-things-blog

脚本主要是基于sysfs虚拟文件系统,这是由内核用来将设备或驱动相关的信息输出到用户空间的一种机制。网络接口的相关分析数据会通过“/sys/class/net/<ethX>/statistics”输出。

举个例子,eth0的网口上分析报告会输出到这些文件中:

/sys/class/net/eth0/statistics/rx_packets: 收到的数据包数据

/sys/class/net/eth0/statistics/tx_packets: 传输的数据包数量

/sys/class/net/eth0/statistics/rx_bytes: 接收的字节数

/sys/class/net/eth0/statistics/tx_bytes: 传输的字节数

/sys/class/net/eth0/statistics/rx_dropped: 收包时丢弃的数据包

/sys/class/net/eth0/statistics/tx_dropped: 发包时丢弃的数据包

netpps.sh---测量网口每秒数据包

#/bin/bash

INTERVAL="1" # update interval in seconds

if [ -z "$1" ]; then

echo usage: $0 [network-interface]

echo e.g. $0 eth0

echo shows packets-per-second

exit

fi

while true

do

R1=`cat /sys/class/net/$1/statistics/rx_packets`

T1=`cat /sys/class/net/$1/statistics/tx_packets`

sleep $INTERVAL

R2=`cat /sys/class/net/$1/statistics/rx_packets`

T2=`cat /sys/class/net/$1/statistics/tx_packets`

TXPPS=`expr $T2 - $T1`

RXPPS=`expr $R2 - $R1`

echo "TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"

done

netspeed.sh---网络带宽测量
#/bin/bash

INTERVAL="1" # update interval in seconds

if [ -z "$1" ]; then

echo

echo usage: $0 [network-interface]

echo

echo e.g. $0 eth0

echo

exit

fi

IF=$1

while true

do

R1=`cat /sys/class/net/$1/statistics/rx_bytes`

T1=`cat /sys/class/net/$1/statistics/tx_bytes`

sleep $INTERVAL

R2=`cat /sys/class/net/$1/statistics/rx_bytes`

T2=`cat /sys/class/net/$1/statistics/tx_bytes`

TBPS=`expr $T2 - $T1`

RBPS=`expr $R2 - $R1`

TKBPS=`expr $TBPS / 1024`

RKBPS=`expr $RBPS / 1024`

echo "TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s"

done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: