linux 网卡实时流量监控监本

目的

  • 监控当前 linux 下每个网卡实时流量

脚本范例

#!/bin/bash
# bond_traffic_monitor.sh

INTERVAL=2  # 刷新间隔(秒)
BOND_IFACE="bond0"
SLAVES=("eth0" "eth1" "eth2" "eth3")

# 获取初始值
declare -A rx_start tx_start
for iface in "${SLAVES[@]}" "$BOND_IFACE"; do
    rx_start[$iface]=$(cat /sys/class/net/$iface/statistics/rx_bytes)
    tx_start[$iface]=$(cat /sys/class/net/$iface/statistics/tx_bytes)
done

echo "监控 Bond 接口流量 - 按 Ctrl+C 退出"
echo "接口        RX速率     TX速率     RX总量     TX总量"
echo "----------------------------------------------------"

while true; do
    sleep $INTERVAL

    # 获取当前值并计算差值
    echo "================================"
    for iface in "${SLAVES[@]}" "$BOND_IFACE"; do
        rx_current=$(cat /sys/class/net/$iface/statistics/rx_bytes)
        tx_current=$(cat /sys/class/net/$iface/statistics/tx_bytes)

        rx_diff=$((($rx_current - ${rx_start[$iface]}) / INTERVAL))
        tx_diff=$((($tx_current - ${tx_start[$iface]}) / INTERVAL))

        rx_total=$(($rx_current - ${rx_start[$iface]}))
        tx_total=$(($tx_current - ${tx_start[$iface]}))

        printf "%-8s %8s/s %8s/s %10s %10s\n" \
               "$iface" \
               "$(numfmt --to=iec $rx_diff)" \
               "$(numfmt --to=iec $tx_diff)" \
               "$(numfmt --to=iec $rx_total)" \
               "$(numfmt --to=iec $tx_total)"

        # 更新起始值
        rx_start[$iface]=$rx_current
        tx_start[$iface]=$tx_current
    done
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值