我如何知道哪些进程正在使用网络?

我如何知道哪些进程正在使用网络?

有时我可以在 Gnome 系统监视器中看到网络使用率很高。我想知道哪个进程正在下载/上传数据。是否有任何工具可以向我显示:

  1. 哪些进程正在使用互联网
  2. 动态实时查看这些过程的下载/上传速度
  3. 连接的详细信息(例如远程 IP、端口号等)

我的系统是 Ubuntu 10.10。

我试过了lsof,但输出看起来非常不友好。也许有一些技巧可以使用它?或者有更好的替代方案?

答案1

netstat --inet -ap将显示哪些进程正在使用互联网以及每个进程正在使用的主机/端口。如果您想要 IP 地址而不是主机名,请使用-n。(--inet仅显示互联网套接字,-a显示侦听和连接套接字,-p显示进程名称/ID 信息)。您可能希望使用 来运行它,sudo以便它可以为您提供有关所有进程的信息。

nethogs将显示每个进程正在使用的带宽量,但它不会告诉您每个进程正在连接到哪个主机。

ntop有点沉重,但可以让您大致了解网络流量。

(netstat 是默认安装的,而 nethogs 和 ntop 可在 Ubuntu 的 repos 中找到)

据我所知,没有任何单一实用程序可以将 1、2 和 3 结合在一起。

答案2

网猪可以处理您的前两个请求。伊夫托普可以处理第三个。您可能需要按在 iftop 中显示端口号。

NetHogs 是一款小型“网络流量”工具。它不像大多数工具那样按协议或子网细分流量,而是按进程分组带宽。NetHogs 不依赖于加载特殊内核模块。如果突然出现大量网络流量,您可以启动 NetHogs 并立即查看是哪个 PID 导致的。这让您可以轻松识别失控并突然占用带宽的程序。

iftop 监控网络使用情况的功能与 top(1) 监控 CPU 使用情况的功能相同。它监听指定接口上的网络流量,并显示主机对当前带宽使用情况的表格。

答案3

对于 lsof 使用lsof -i

您还可以使用netstat -punta以 root 身份运行来查询每个进程的活动连接,以显示进程名称,或不使用以仅显示 PID。要获得动态实时视图,您可以轻松使用以下方法手表-> watch -n1 netstat -punta(iftop 也一样)。

至于你可以使用的替代方案ntop+ 伊夫托普

答案4

查看网络状态-p,但我不知道您是否会发现输出比 lsof 更友好。它也无法满足您的第二个要求。

相关内容