Linux iftop命令介绍
iftop是一个用来监控网络流量的命令,它可以实时显示当前网络接口的带宽使用情况,以及各个连接的源地址和目的地址。iftop的全称是interface top,类似于top命令,但是针对的是网络接口。iftop可以帮助我们分析网络瓶颈,优化网络性能,排查网络故障等。
Linux iftop命令适用的Linux版本
iftop命令在大多数Linux发行版中都可以使用,但是需要安装iftop软件包。如果你的Linux系统没有安装iftop,你可以使用以下命令进行安装:
- 在基于Debian的Linux系统中,如Ubuntu,可以使用apt命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt install iftop
- 在基于Red Hat的Linux系统中,如CentOS,可以使用yum或dnf命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install iftop
# 或者
[linux@bashcommandnotfound.cn ~]$ sudo dnf install iftop
- 在基于Arch的Linux系统中,如Manjaro,可以使用pacman命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S iftop
Linux iftop命令的基本语法
iftop命令的基本语法格式如下:
iftop [选项] [过滤表达式]
其中,选项可以用来指定一些显示或控制的参数,过滤表达式可以用来限制显示的连接,它的语法和tcpdump命令的过滤表达式一样。
Linux iftop命令的常用选项或参数说明
iftop命令有很多选项,下面列举了20个最常用的选项,以及它们的含义和示例:
选项 | 含义 | 示例 |
---|---|---|
-h | 显示帮助信息 | iftop -h |
-n | 不解析主机名,只显示IP地址 | iftop -n |
-N | 不解析端口名,只显示端口号 | iftop -N |
-p | 以混杂模式运行,可以监控所有流经网络接口的数据包 | iftop -p |
-b | 不显示条形图,只显示数字 | iftop -b |
-B | 以字节为单位显示流量,而不是位 | iftop -B |
-i | 指定要监控的网络接口 | iftop -i eth0 |
-f | 指定过滤表达式,只显示符合条件的连接 | iftop -f "port 80" |
-F | 指定一个网络范围,只显示该网络范围内的连接 | iftop -F 192.168.1.0/24 |
-P | 显示端口信息,而不是服务名 | iftop -P |
-m | 指定一个流量限制,超过该限制的连接会被高亮显示 | iftop -m 1M |
-c | 指定一个配置文件,从中读取选项和过滤表达式 | iftop -c ~/.iftoprc |
-t | 以文本模式运行,不显示图形界面 | iftop -t |
-s | 指定一个时间间隔,以秒为单位,到达该时间后退出 | iftop -s 10 |
-L | 指定显示的最大连接数 | iftop -L 20 |
-l | 显示源地址和目的地址的完整长度,而不是截断 | iftop -l |
-o | 指定排序方式,可以是源地址(src)、目的地址(dst)、发送流量(send)、接收流量(receive)或总流量(total) | iftop -o total |
-g | 启用或禁用图形界面的显示,可以在运行时切换 | iftop -g |
-a | 显示绝对值,而不是平均值 | iftop -a |
-d | 指定DNS查询的时间间隔,以秒为单位,0表示禁用DNS查询 | iftop -d 10 |
Linux iftop命令的实例
下面给出了一些常见的iftop命令的实例,以及它们的效果和说明:
实例1:监控默认的网络接口
[linux@bashcommandnotfound.cn ~]$ iftop
这个命令会监控默认的网络接口,通常是eth0,显示当前的带宽使用情况,以及各个连接的源地址和目的地址。界面上方显示了总的发送流量(TX)、接收流量(RX)和总流量(TOTAL),以及每秒(2s)、每10秒(10s)和每40秒(40s)的平均值。界面中间显示了各个连接的流量情况,以及条形图和百分比。界面下方显示了一些快捷键,可以用来控制显示的内容和方式。
实例2:监控指定的网络接口
[linux@bashcommandnotfound.cn ~]$ iftop -i wlan0
这个命令会监控指定的网络接口,如wlan0,显示该接口的流量情况。如果没有指定网络接口,iftop会自动选择一个活跃的接口。
实例3:不解析主机名和端口名
[linux@bashcommandnotfound.cn ~]$ iftop -n -N
这个命令会禁用主机名和端口名的解析,只显示IP地址和端口号。这样可以加快显示的速度,也可以避免一些不必要的DNS查询。
实例4:过滤指定的端口或协议
[linux@bashcommandnotfound.cn ~]$ iftop -f "port 22"
这个命令会使用过滤表达式,只显示使用指定端口的连接,如22端口,通常是SSH协议。过滤表达式的语法和tcpdump命令的一样,可以使用各种逻辑运算符和通配符。例如,可以使用-f "port 80 or port 443"
来过滤HTTP和HTTPS协议的连接,或者使用-f "not port 53"
来排除DNS协议的连接。
实例5:过滤指定的网络范围
[linux@bashcommandnotfound.cn ~]$ iftop -F 192.168.1.0/24
这个命令会使用一个网络范围,只显示该网络范围内的连接,如192.168.1.0/24,表示192.168.1.1到192.168.1.254之间的连接。这样可以方便地监控本地网络的流量情况。
实例6:以文本模式运行
[linux@bashcommandnotfound.cn ~]$ iftop -t
这个命令会以文本模式运行,不显示图形界面,只显示数字和表格。这样可以方便地将输出重定向到文件或其他程序,或者在不支持图形界面的终端中运行。
实例7:指定一个流量限制
[linux@bashcommandnotfound.cn ~]$ iftop -m 1M
这个命令会指定一个流量限制,如1M。
实例8:显示进出子网的流量
[linux@bashcommandnotfound.cn ~]$ iftop -F 192.168.2.0/24
这个命令会使用一个网络范围,只显示该网络范围内的连接,如192.168.2.0/24,表示192.168.2.1到192.168.2.254之间的连接。这样可以方便地监控本地网络的流量情况。你可以看到,如果你从这个子网进出了一些数据包,你会在界面中看到相应的流量。例如,如果你从192.168.2.10向外发送了一些数据包,你会看到发送流量(send)为正数;如果你从192.168.2.10接收了一些数据包,你会看到接收流量(receive)为正数。
实例9:按来源地址对输出进行排序
[linux@bashcommandnotfound.cn ~]$ iftop -o source
这个命令会按按照来源地址对输出进行排序,也就是说,最左边的那些连接会被显示在最上面。这样可以帮助我们分析哪些主机或设备是网络的主要负载或者者瓶颈。例如,如果你看到一个来源地址为192.168.1.100的连接占用了很高的发送流量(send),那么可能说明这个主机或设备是一个大型的服务器或者应用程序。
实例10:以字节为单位显示带宽使用情况
[linux@bashcommandnotfound.cn ~]$ iftop -B -i enp0s8
这个命令会以字节为单位显示带宽使用情况,而不是位。字节是计算机中最基本的数据单位,位是计算机中最小的信息单位。一般来说,位和字节之间有一个固定的转换关系,即1位=8字节。但是,在实际应用中,并不是所有的位都能被完全利用或者测量。因此,在使用iftop时,我们需要注意区分位和字节,并且根据需要选择合适的选项和参数。
Linux iftop 命令的注意事项
- 在使用iftop命令的时候,需要对你的系统网络接口有一定的了解。
- 使用iftop -h 命令可以查看更多的参数选项的详细用法。
- 如果提示"bash: iftop: command not found",请按上述的安装命令进行安装。
评论区