我正在寻找一种获取 Linux 机器上当前总带宽使用情况的好方法。我尝试过iftop
、,nethogs
但与系统监视器相比,它们没有显示实际带宽使用情况;它们不适合我的项目需求。我想要一个我执行的命令,它返回当前上传和下载的使用情况,而不返回其他任何内容。
我还想使用原生 Linux 工具来实现这一点,而无需安装任何东西。事实上,我正在制作一个监控应用程序,我希望它能够监控计算机,而无需在用户想要监控的每台计算机上安装任何东西,那就太好了!
答案1
使用iptraf
-http://www.linuxcommand.org/man_pages/iptraf8.html
它是一个基于 ncurses 的命令行实用程序,能够为您提供机器上所有接口的统计信息 - 包括带宽使用情况。
答案2
您可以使用很多工具:,,,,nload
...如果您只想获取其输出的特定部分(例如,上传和下载),我很确定您可以bmon
//输出以使其为您工作。iftop
vnstat
ifstat
grep
cut
awk
答案3
sysstat 也收集网络状态。如果你执行“man sar”,你会看到所有可以保留历史数据的资源。
通过在 cron 中输入命令“/usr/lib/sa/sa1”(或 /usr/lib64/sa/sa1)进行设置,并在每次需要数据点时运行它(例如每 5 分钟)
然后您可以使用“sar”查看您的数据。默认是今天。您还可以查看最多 30 天的历史数据。您还可以存档数据,以便永久保存(每天的数据约为 8mb)。
对于网络,您可以使用“sar -n”
非常棒的工具:)
一个例子:
testlinux:~ # sar -n DEV | head -10
Linux 2.6.16.60-0.21-default (pCITFileSvr01) 11/07/10
00:00:01 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
00:05:01 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:05:01 eth0 9.95 0.12 1.42 0.02 0.00 0.00 0.00
00:10:01 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:10:01 eth0 10.20 0.04 1.44 0.00 0.00 0.00 0.00
00:15:01 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:15:01 eth0 10.32 0.12 1.50 0.02 0.00 0.00 0.00
00:20:01 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
testlinux:~ #
答案4
好吧,我做了一些研究后发现这简而言之,它用于netstat
总结网络使用情况。这是我修改后的命令
netstat -e -n -i | grep wlan0 -A 5 | grep 'RX packets' | tail -1
输出示例:-
RX packets 76639 bytes 73706194 (70.2 MiB)
更改wlan0
您的卡接口名称,您可以过滤该命令的更多输出,例如
netstat -e -n -i | grep wlan0 -A 5 | grep 'RX packets' | tail -1 | awk '{print $6$7}'