一: 使用场景
工作中,有时为了分析系统的性能瓶颈, 需要测量程序运行期间网卡的当前速率, 看看瓶颈是不是在网络传输上. 本文提供一个测量网卡的当前速率的Shell脚本.
二: 脚本
使用方式: ./nettraff.sh eth0
nettraff.sh为脚本名称,eth0为网卡名称, 可以通过ifconfig命令查看到
#!/bin/bashwhile [ "1" ]doeth=$1RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')sleep 1RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')clearecho -e "\t RX `date +%k:%M:%S` TX"RX=$((${RXnext}-${RXpre}))TX=$((${TXnext}-${TXpre}))if [[ $RX -lt 1024 ]];thenRX="${RX}B/s"elif [[ $RX -gt 1048576 ]];thenRX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')elseRX=$(echo $RX | awk '{print $1/1024 "KB/s"}')fiif [[ $TX -lt 1024 ]];thenTX="${TX}B/s"elif [[ $TX -gt 1048576 ]];thenTX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')elseTX=$(echo $TX | awk '{print $1/1024 "KB/s"}')fiecho -e "$eth \t $RX $TX "done