我需要一个 bash 命令来获取当前网络带宽,吞吐量和网卡正常运行时间,但我还没有在网上找到任何有希望的东西。
我尝试从中获取此类信息/proc/net/dev
,但该文件似乎没有任何有关每个值含义的手册。
而且大多数网络监控工具都不是grep
-able 或awk
-able 的,因此它们对于脚本来说不是很好。
答案1
您好,欢迎来到 stackexchange。
首先,您正在寻找的不是“bash 命令”,您只是在寻找命令行实用程序。
其次,此类指标必须随着时间的推移而收集,并且会消耗主机上的资源,因此默认情况下不会执行此操作。
您可以通过轮询命令来创建自己的指标ip -s link show <interface>
,例如:
$ ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether b8:ae:ed:72:f3:b3 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
579827124444 443147837 0 0 0 2802393
TX: bytes packets errors dropped carrier collsns
153295015536 161518564 0 0 0 0
然后解析出RX:
字节和TX:
字节并存储起来供以后使用。在固定的时间后,再次读取这些指标,并根据计数和经过的时间计算您想要的值。
对于网卡的正常运行时间,您可能必须检测网络接口状态的变化,我不知道任何跟踪接口启动时间的信息。
正如评论中所指出的,有一些第三方软件包可以为您执行某些操作,例如bwm-ng
,但默认情况下它可能没有安装在您的发行版上。话虽如此,他们只会从您启动该实用程序时收集指标。