Linux 获取单条带宽使用情况示例

Linux 获取单条带宽使用情况示例

我想要做的是编写一个脚本,收集一些信息(例如 CPU 温度和带宽使用情况)并将其记录到文件中。

我不知道如何获取当前使用的带宽的单个样本:我发现有很多工具可以从命令行获取此信息,但其中大多数是基于 curses 的,所以我无法将它们的输出放入文件中。在这些工具中,我发现了 bmon,它具有很好的 ascii 输出。问题是这个输出不断更新,而我想要的是每个程序调用的单个“样本”。

有没有办法用 bmon 来完成这个任务,或者有人知道其他程序来完成这个任务?

答案1

幸运的是,您sysstat已经存在并且已经在做您想做的事情。

1. 安装你的发行版的sysstat软件包然后将以下内容添加到/etc/crontab

*/5 * * * * root /usr/lib/sysstat/sa1 &
5 19 * * * root /usr/lib/sysstat/sa2 -A &

2. 等待 10 分钟。利用这段时间阅读sar手册页。

3. 尽情使用sar

答案2

ifconfig 将告诉您单个接口处理了多少流量,例如

tony@eightbit:~$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr de:ad:be:ef:00:00  
          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24776 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22892 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:19629330 (19.6 MB)  TX bytes:3968336 (3.9 MB)
          Interrupt:23 Base address:0xc000 

另外,请看一下netstat -s

答案3

由于缺乏这样简单的工具,我前段时间写过宝马,一个简单的带宽监视器

我将它用作后台守护进程,不断将特定接口上某个方向(上传/下载)使用的当前带宽写入文件。

./bwm --interface wlan0 --upload > /tmp/bandwidth-upload

每当我需要当前上传带宽使用情况时,我只需 cat 文件即可:

cat /tmp/bandwidth-upload

这对于监控脚本或状态栏脚本(针对 dwm、wmii 等)特别有效。

相关内容