背景
需求
主要是根据/proc/net/dev 文件做循环取值
设计思路
通过查看/proc/net/dev文件中的网卡流量大小,并且每1秒进行一次(新流量-旧流量的计算),得出网卡的实时流量。
#!/bin/bashNIC=$1 #设置变量 存储网卡名称echo -e "In ------- Out" #-e 处理特殊字符while true; do #持续循环获取OLD_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev) #通过awk 匹配到网卡这一列 获取接收的数据包OLD_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev) #通过awk 匹配到网卡这一列 获取传输的数据包sleep 1 #经过1秒后NEW_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev) #再次获取接收的包NEW_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev) #再次获取传输的包IN=$(printf "%.1f%s" "$((($NEW_IN-$OLD_IN)/1024))" "kb/s") #查看差值 就能获取实时流量OUT=$(printf "%.1f%s" "$((($NEW_OUT-$OLD_OUT)/1024))" "KB/S")echo "$IN $OUT"sleep 1done
