通过 /sys/class/net 获取当前网络利用率

通过 /sys/class/net 获取当前网络利用率

使用一些低级函数来监控我的系统统计数据。

我想以与获取 cpu 温度相同的方式获取当前网络利用率

cat /sys/class/thermal/thermal_zone0/temp

或风扇速度

cat /sys/class/hwmon/hwmon6/fan1_input

看着

/sys/class/net/my_network_adapter/

我没有找到查看实际带宽消耗的方法,rx_bytes 只是给出下载的数据总量。

答案1

要获得 B/s 的速率,除了 shell 之外不需要任何东西:只需每秒读取 rx_bytes 文件并将当前值与前一秒的值进行比较。

rx1=$(cat /sys/class/net/wlp3s0/statistics/rx_bytes)
while sleep 1; do
    rx2=$(cat /sys/class/net/wlp3s0/statistics/rx_bytes)
    printf 'Download rate: %s B/s\n' "$((rx2-rx1))"
    rx1=$rx2
done

当然,替换wlp3s0为你想要监控的接口。

答案2

Linux 内核不跟踪临时网络接口统计信息 - 您必须自己计算这些值。

有多种实用程序和应用程序可以为您执行此操作,包括 Gnome System Monitor(如果您是 Gnome 用户),那么 KDE 有 KSysGuard/Plasma Network Monitor/KNemo 等。

相关内容