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

For*_*est 10 networking unix ubuntu debian gnome

有时我可以在 Gnome 系统监视器中看到大量使用网络。我想知道下载/上传数据的过程是什么。有什么工具可以告诉我:

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

我的系统是 Ubuntu 10.10。

我试过了,lsof但输出看起来很不友好。也许有一些技巧可以使用它?或者有更好的选择吗?

小智 13

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

nethogs 将显示每个进程使用了​​多少带宽,但它不会告诉您每个进程连接到哪个主机。

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

(默认安装了 netstat,Ubuntu 的 repos 中提供了 nethogs 和 ntop)

据我所知,没有一个实用程序可以将 1、2 和 3 放在一起。


sci*_*rus 8

Nethogs可以处理您的前两个请求。Iftop可以处理第三个。您可能需要在 iftop 中按p以显示端口号。

NetHogs 是一个小型的“网络顶部”工具。它不像大多数工具那样按协议或每个子网分解流量,而是按进程分组带宽。NetHogs 不依赖于要加载的特殊内核模块。如果突然出现大量网络流量,您可以启动 NetHogs 并立即查看是哪个 PID 导致了这种情况。这使您可以轻松识别已变得疯狂并突然占用您带宽的程序。

iftop 对网络使用情况的作用就像 top(1) 对 CPU 使用情况的作用一样。它侦听命名接口上的网络流量,并按主机对显示当前带宽使用情况表。


Shi*_*nok 5

对于 lsof 使用lsof -i

您还可以使用netstat -punta以 root 身份运行来查询每个进程的活动连接以显示进程名称或不只显示 PID。要获得动态实时视图,您可以使用watch ->轻松地绕过watch -n1 netstat -punta(iftop 也是如此)。

至于替代方案,您可以使用ntop + iftop