162 lines
3.1 KiB
Markdown
162 lines
3.1 KiB
Markdown
---
|
||
title: `iftop` 是一个实时网络流量监控工具,类似 `top`
|
||
created: 2026-05-31
|
||
source: Cherry Studio
|
||
tags:
|
||
---
|
||
`iftop` 是一个实时网络流量监控工具,类似 `top` 命令,但专注于显示 **网络接口的带宽使用情况**,常用于排查服务器带宽占用过高的问题。
|
||
|
||
---
|
||
|
||
## **1\. 安装 iftop**
|
||
|
||
### **Debian/Ubuntu**
|
||
|
||
```bash
|
||
sudo apt install iftop
|
||
```
|
||
|
||
### **RHEL/CentOS**
|
||
|
||
```bash
|
||
sudo yum install epel-release # 确保EPEL仓库可用
|
||
sudo yum install iftop
|
||
```
|
||
|
||
### **Arch Linux**
|
||
|
||
```bash
|
||
sudo pacman -S iftop
|
||
```
|
||
|
||
---
|
||
|
||
## **2\. 基本使用方法**
|
||
|
||
### **直接运行(默认监控所有网卡)**
|
||
|
||
```bash
|
||
sudo iftop
|
||
```
|
||
|
||
(需要 `root` 权限,因为要抓取网络数据包)
|
||
|
||
### **指定网卡(如 eth0、ens3)**
|
||
|
||
```bash
|
||
sudo iftop -i eth0
|
||
```
|
||
|
||
### **按目标 IP 排序(**`-n` **不解析主机名)**
|
||
|
||
```bash
|
||
sudo iftop -n
|
||
```
|
||
|
||
(避免DNS查询,加快显示)
|
||
|
||
---
|
||
|
||
## **3\. 界面交互操作**
|
||
|
||
`iftop` **运行时,可以使用以下快捷键调整显示方式:**
|
||
|
||
| 按键 | 功能 |
|
||
| --- | --- |
|
||
| `h` | 显示帮助 |
|
||
| `n` | 打开/关闭主机名解析(DNS) |
|
||
| `s` | 显示源IP(默认显示目标IP) |
|
||
| `d` | 显示目标IP(切换) |
|
||
| `t` | 切换流量显示模式(单行/两行/合计) |
|
||
| `N` | 切换端口显示(开启/关闭) |
|
||
| `p` | 显示/隐藏端口号 |
|
||
| `P` | 暂停流量刷新 |
|
||
| `q` | 退出 iftop |
|
||
|
||
---
|
||
|
||
## **4\. 常用高级参数**
|
||
|
||
### **显示特定网段的流量(如 192.168.1.0/24)**
|
||
|
||
```bash
|
||
sudo iftop -F 192.168.1.0/24
|
||
```
|
||
|
||
### **按带宽排序**
|
||
|
||
```bash
|
||
sudo iftop -B
|
||
```
|
||
|
||
(默认单位为bit/s,可加 `-B` 改 bytes/s)
|
||
|
||
### **显示端口**
|
||
|
||
```bash
|
||
sudo iftop -P
|
||
```
|
||
|
||
(显示哪些TCP/UDP端口在使用带宽)
|
||
|
||
### **过滤特定流量(如只显示HTTP)**
|
||
|
||
```bash
|
||
sudo iftop -f "port 80"
|
||
```
|
||
|
||
(支持 `tcpdump` 语法,如 `host 1.1.1.1`)
|
||
|
||
---
|
||
|
||
## **5\. 示例使用场景**
|
||
|
||
### **① 检查哪个 IP 占用带宽最高**
|
||
|
||
```bash
|
||
sudo iftop -n -i eth0
|
||
```
|
||
|
||
👉 **观察** `=>` **和** `<=` **方向流量,找到占用最高的 IP** (按 `<` 和 `>` 可切换排序)
|
||
|
||
### **② 分析网站访问流量**
|
||
|
||
```bash
|
||
sudo iftop -n -P -i eth0 -f "port 80 or port 443"
|
||
```
|
||
|
||
👉 查看Web请求(HTTP/HTTPS)的流量分布
|
||
|
||
### **③ 监控某台服务器的流量**
|
||
|
||
```bash
|
||
sudo iftop -n -i eth0 host 192.168.1.100
|
||
```
|
||
|
||
👉 只显示与 `192.168.1.100` 通信的流量
|
||
|
||
---
|
||
|
||
## **6\. 注意事项**
|
||
|
||
- `iftop` **不记录历史流量**,如果需要长期日志,可以用 `nethogs` 或 `vnstat`。
|
||
|
||
- **高流量环境下**可能导致显示不流畅,可尝试 `-N` 关闭端口解析优化性能。
|
||
|
||
- **远程服务器监控** 可能需要工具如 `nload` 或 `bmon`(iftop 更适合本地实时监控)。
|
||
|
||
|
||
---
|
||
|
||
### **替代工具**
|
||
|
||
| 工具 | 特点 |
|
||
| --- | --- |
|
||
| **nethogs** | 按进程查看流量(类似 `top`) |
|
||
| **vnstat** | 每天/每月流量统计(长期记录) |
|
||
| **bmon** | 更美观的终端带宽监控 |
|
||
| **iptraf** | 更详细的流量分析 |
|
||
|
||
---
|
||
|
||
通过 `iftop` 可以快速定位 **谁在占用** 网络带宽,适合运维排查高负载问题 🚀。 |