linux流量监控
1. 使用 nethogs 查看每个程序的网络使用情况
nethogs 是一个按进程显示网络带宽使用情况的工具。
安装 nethogs:
-
在 Debian/Ubuntu 系统上:
sudo apt install nethogs -
在 CentOS/RHEL 系统上:
sudo yum install nethogs
使用 nethogs:
运行以下命令:
sudo nethogs
你会看到每个进程的网络流量(上传和下载)。
2. 使用 ss 或 netstat 查看网络连接
ss 和 netstat 可以显示当前的网络连接,但需要结合 lsof 或 ps 来查找具体的进程。
使用 ss:
sudo ss -tunap
-
-t:显示 TCP 连接。 -
-u:显示 UDP 连接。 -
-n:以数字形式显示地址和端口。 -
-a:显示所有连接。 -
-p:显示进程信息。
你会看到类似以下的输出:
ESTAB 0 0 192.168.1.100:57632 203.0.113.1:443 users:(("chrome",pid=1234,fd=123))
这里会显示进程名称和 PID。
使用 netstat:
sudo netstat -tunap
输出与 ss 类似。
3. 使用 lsof 查看打开的网络连接
lsof 可以列出打开的文件和网络连接。
查看所有网络连接:
sudo lsof -i
查看特定端口的连接:
sudo lsof -i :80
这会显示所有使用端口 80 的进程。
4. 使用 bmon 或 bwm-ng 查看实时流量
bmon 和 bwm-ng 是实时带宽监控工具,可以显示每个接口的流量,但不会显示具体进程。
安装 bmon:
-
Debian/Ubuntu:
sudo apt install bmon -
CentOS/RHEL:
sudo yum install bmon
使用 bmon:
sudo bmon
5. 使用 iptables 记录流量
如果你需要更详细的流量记录,可以使用 iptables 记录流量并配合日志分析。
添加 iptables 规则:
sudo iptables -I OUTPUT -p tcp -j LOG --log-prefix "OUTPUT Traffic: "
sudo iptables -I INPUT -p tcp -j LOG --log-prefix "INPUT Traffic: "
查看日志:
日志通常保存在 /var/log/syslog 或 /var/log/messages 中:
sudo tail -f /var/log/syslog | grep "OUTPUT Traffic:"
总结
-
如果你想查看具体程序的网络使用情况,推荐使用
nethogs。 -
如果你想查看网络连接和对应的进程,使用
ss或netstat。 -
如果你需要更详细的流量分析,可以结合
iptables和日志工具。

浙公网安备 33010602011771号