0
首页运维技巧Linux系统中要查看哪个进程或IP正在占用宽带,可以通过 ...

Linux系统中要查看哪个进程或IP正在占用宽带,可以通过以下几种方法来实现

xiaojia
管理员

31

主题

0

回帖

144

积分

管理员

积分
144
运维技巧 27 0 2025-12-26 21:23:03
微信图片_2025-12-26_235459_361.png


1. 使用 iftop

iftop 是一个实时的网络带宽监控工具,它可以显示哪些进程正在使用网络带宽。

首先,你需要安装 iftop。在基于Debian的系统(如Ubuntu)上,可以使用以下命令安装:

sudo apt-get update
sudo apt-get install iftop

在基于RPM的系统(如CentOS)上,可以使用:

sudo yum install iftop


然后,运行 iftop 来查看哪个进程正在使用网络带宽:

sudo iftop

iftop 会显示实时的网络流量信息,包括发送和接收的流量、源地址和目标地址等。


2. 使用 nethogs

nethogs 是另一个实时网络带宽监控工具,它可以显示每个进程的网络使用情况。

安装 nethogs:
在Debian/Ubuntu上:

sudo apt-get install nethogs

在CentOS上:

sudo yum install nethogs

运行 nethogs:

sudo nethogs

这将显示每个进程的网络使用情况。


3. 使用 iptables 和 conntrack 模块(高级)

如果你需要更详细地跟踪网络连接和进程,可以使用 iptables 与 conntrack 模块。这需要一些配置和高级技巧,但可以提供深入的跟踪能力。

首先,确保你的系统启用了 conntrack 模块:

sudo modprobe nf_conntrack

然后,使用 iptables 设置规则来跟踪连接:

sudo iptables -t raw -A PREROUTING -p tcp --sport 1024: -j CT --notracksudo iptables -t raw -A OUTPUT -p tcp --sport 1024: -j CT --notrack

接下来,你可以使用 conntrack 来查看当前的连接和它们所属的进程:

sudo conntrack -L | grep ESTABLISHED | awk <font color="rgb(39, 133, 47)">'{print $5}'</font> | <font color="rgb(213, 159, 0)">sort</font> | <font color="rgb(213, 159, 0)">uniq</font> -c | <font color="rgb(213, 159, 0)">sort</font> -nr

这个命令会列出所有已建立的TCP连接及其数量,但没有直接显示进程ID。要进一步查看进程ID,可以使用 conntrack 的输出与 /proc/net/tcp 或 /proc/net/tcp6 文件结合使用。例如:

sudo conntrack -L | grep ESTABLISHED | awk <font color="rgb(39, 133, 47)">'{print $5}'</font> | <font color="rgb(182, 0, 189)">while</font> <font color="rgb(213, 159, 0)">read</font> line; <font color="rgb(182, 0, 189)">do</font> sudo lsof -i :<font color="rgb(170, 118, 0)">$line</font>; <font color="rgb(182, 0, 189)">done</font>

注意:这种方法比较复杂,通常用于需要深入了解网络连接的高级用户。


4. 使用 ss 和 lsof

虽然 ss 和 lsof 工具主要用于查看系统中的socket和打开的文件,但它们也可以用来辅助查看哪些进程在使用网络。例如:

sudo ss -tuln | grep ESTABLISHED  <font color="rgb(145, 149, 163)"><i># 查看所有已建立的TCP连接</i></font>sudo lsof -i | grep ESTABLISHED   <font color="rgb(145, 149, 163)"><i># 查看所有已打开的网络文件描述符和对应的进程信息</i></font>

这些方法可以帮助你找到哪些进程在使用网络带宽,但具体的工具选择取决于你的具体需求和对实时性的要求。对于大多数用户来说,iftop 或 nethogs 提供了简单易用的解决方案。


您需要登录后才可以回帖 立即登录
高级模式
返回