7.7 KiB
三款简单而优秀的Linux网络监视工具
通过iftop,Nethogs和vnstat详细了解你的网络连接状态。经许可使用
你可以通过这三个Linux命令了解当前网络的大量信息。iftop通过进程号跟踪网络连接,Nethogs快速告知你哪些进程在占用你的带宽,而vnstat以一个良好的轻量级守护进程在后台运行,并实时记录你的网络使用情况。
iftop
优秀的iftop可以监听您指定的网络接口,并以top的样式呈现。
这是一个不错的小工具,用于找出网络拥塞,测速和维持网络流量总量。看到自己到底在用多少带宽往往是非常惊人的,尤其是对于我们这些仍然记得电话线路,调制解调器,“高速”到令人惊叫的kb和实时波特率的老人们。我们在很久之前就不再使用波特率,转而钟情于比特率。波特率用于衡量信号变化,尽管有时候与比特率相同,但大多数情况下并非如此。
如果你只有一个网络接口,直接运行iftop即可。不过iftop需要root权限:
$ sudo iftop
如果你有多个,那就指定你要监控的接口:
$ sudo iftop -i wlan0
就像top命令一样,你可以在命令运行时更改显示选项:
-
h 切换帮助界面。
-
n 是否解析域名。
-
s 切换源地址的显示,d则切换目的地址的显示。
-
S 是否显示端口号。
-
N 是否解析端口;若关闭解析则显示端口号。
-
t切换文本显示接口。默认的显示方式需要ncurses。我个人认为图1的显示方式在组织性和可读性都更加良好。
-
p 暂停显示更新。
-
q 退出程序。
图 1:组织性和可读性良好的文本显示。经许可使用
当你切换显示设置的时候,iftop并不会中断监测流量。当然你也可以单独监测一台主机。而这需要主机的IP地址和子网掩码。现在,我很好奇Pandora(译者注:一家美国的电台公司)能给我贫瘠的带宽带来多大的负载。因此我首先使用dig命令找到他们的IP地址:
$ dig A pandora.com
[...]
;; ANSWER SECTION:
pandora.com. 267 IN A 208.85.40.20
pandora.com. 267 IN A 208.85.40.50
那子网掩码呢?ipcalc会告诉我们:
$ ipcalc -b 208.85.40.20
Address: 208.85.40.20
Netmask: 255.255.255.0 = 24
Wildcard: 0.0.0.255
=>
Network: 208.85.40.0/24
现在,将IP地址和子网掩码提供给iftop:
$ sudo iftop -F 208.85.40.20/24 -i wlan0
很棒的不是么?而我也很惊奇地发现,Pandora在我的网络上,每小时大约使用500kb。并且就像大多数流媒体服务一样,Pandora的流量在迅速增长,并依靠缓存稳定下来。
你可以使用**-G**选项对IPv6地址执行相同的操作。查阅友好的man可以帮助你了解iftop的其他功能,包括使用个人配置文件自定义你的默认选项,以及使用自定义过滤(请参阅 PCAP-FILTER 来获取过滤指南)。
Nethogs
当你想要快速了解是谁在吸取你的带宽的时候,Nethogs是个快速而简单的方法。你需要以root身份运行并指定要监听的接口。它会给你显示大量的应用程序及其进程号,所以如果你想的话,你可以借此杀死任一进程。
$ sudo nethogs wlan0
NetHogs version 0.8.1
PID USER PROGRAM DEV SENT RECEIVED
7690 carla /usr/lib/firefox wlan0 12.494 556.580 KB/sec
5648 carla .../chromium-browser wlan0 0.052 0.038 KB/sec
TOTAL 12.546 556.618 KB/sec
Nethogs并没有多少选项:在kb/s,kb,b,mb之间循环,按接收和发送的数据包排序,调整刷新延迟。具体请看man nethogs
,或者是运行nethogs -h
。
vnstat
vnstat是最容易使用的网络数据收集工具。它十分轻量并且不需要root权限。它以守护进程在后台运行,因此可以实时地记录你的网络数据。单个vnstat
命令就可以显示所累计的数据。
$ vnstat -i wlan0
Database updated: Tue Oct 17 08:36:38 2017
wlan0 since 10/17/2017
rx: 45.27 MiB tx: 3.77 MiB total: 49.04 MiB
monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Oct '17 45.27 MiB | 3.77 MiB | 49.04 MiB | 0.28 kbit/s
------------------------+-------------+-------------+---------------
estimated 85 MiB | 5 MiB | 90 MiB |
daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
today 45.27 MiB | 3.77 MiB | 49.04 MiB | 12.96 kbit/s
------------------------+-------------+-------------+---------------
estimated 125 MiB | 8 MiB | 133 MiB |
默认情况下它会显示所有的网络接口。使用-i
选项来选择某个接口。也可以像这样合并多个接口的数据:
$ vnstat -i wlan0+eth0+eth1
你可以通过这几种方式过滤数据显示:
-
-h 按小时显示统计信息。
-
-d 按天显示统计信息.
-
-w和**-m**分别按周和月份来显示统计信息。
-
使用**-l**选项查看实时更新。
以下这条命令将会删除wlan1的数据库并不再监视它:
$ vnstat -i wlan1 --delete
而这条命令将会为你的一个网络接口创建一个别名。这个例子使用了Ubuntu16.04的一个有线接口名称:
$ vnstat -u -i enp0s25 --nick eth0
默认情况下,vnstat会监视eth0。你可以在/etc/vnstat.conf
对它进行修改,或者在你的home目录下创建你自己的个人配置文件。请参阅man vnstat
以获取完整的指南。
你也可以安装vnstati来创建简单的彩图(图 2):
$ vnstati -s -i wlx7cdd90a0a1c2 -o vnstat.png
图 2:你可以使用vnstati来创建简单的彩图。经许可使用
请参阅man vnstati
以获取完整的选项。
欲了解 Linux 的更多信息,可以通过学习 Linux 基金会和 edX 的免费课程,“Linux 入门”。
via: https://www.linux.com/learn/intro-to-linux/2017/10/3-simple-excellent-linux-network-monitors
作者:CARLA SCHRODER 译者:KeyLD 校对:校对者ID