it-swarm.cn

如何找出哪个进程占用了我的带宽?

我想我是这里的一个bug的受害者。有时在我工作的时候(我仍然不知道为什么),我的网络流量达到200 KB/s并保持这种状态,即使很难,我也没有做任何与互联网有关的事情。

这有时会发生在CPU使用率上。当它发生时,我只是运行一个top命令来找出哪个进程负责,然后kill它。问题是:我无法知道哪个进程对我的高网络使用负责。资源监视器和top命令都只告诉我我的总网络使用情况,它们都没有告诉我进程特定的网络信息。

我在这里发现了关于监控总带宽使用情况的问题,但正如我所提到的那样,这不是我需要的。是否有另一个命令我可以用来找出哪个过程失控?

命令iftop给出的结果完全不同于系统监视器报告的信息。虽然后者声称网络流量很高,但前者声称只有1 KB/s。

我已经尝试杀死所有明显的(Firefox,更新管理器,Pidgin等)而没有运气。到目前为止,重新启动机器是我找到摆脱问题的唯一方法。

181
Malabarba

我用 nethogs 取得了很大的成功。它必须以root身份运行,但您可以通过不同的方式对统计信息进行排序(例如,自nethogs启动以来监控的KB/s或总带宽)。

此外,如果您使用无线,则需要将设备传递给它。

使用命令安装它:Sudo apt-get install nethogs

示例:Sudo nethogs wlan0

217
Ben

使用iftop查找计算机上收到最多流量的TCP端口。然后使用Sudo netstat -tup找到“拥有”该端口的进程。

那是你正在寻找的过程。

PS:也应该为UDP工作。

53
Li Lo

您可能希望查看ntop - 它应该监视进程级别的网络活动。您可以在软件中心找到ntop或使用Sudo apt-get install ntop

有关安装说明,请按照其页面 http://packages.ntop.org/

13
Marco Ceppi

另一种选择是iptraf。它不会告诉你进程的PID,但会告诉你哪个连接使用了多少带宽。

7
Dennis Kaarsemaker

迟到的答案,但我遇到了同样的问题。原来是Ubuntuone。通过运行tcpdump发现。我在过程识别方面经历了相同的学习曲线。

我的笔记

Ubuntu盒连接信息

今天早上启动我的Ubuntu 10.04桌面,发现几分钟后互联网连接正在爬行。我之前在Windows上看到过这种情况,99%的时间都是间谍软件。所以,我需要调查...命令行样式。

tcpdumpname__。显示Ubuntuone疯了。

系统>首选项> Ubuntu One。关闭所有同步。这样做了。

所以,我想我想看到所有网络连接以及他们正在做什么。我可以

netstat -cW(以宽格式连续列出网络连接,因此不会截断外部​​地址)

lsof -i |grep -v'localhost'(列出打开的文件匹配任何一个Internet地址,grep删除任何与localhost关联的打开文件 - 我想这里是因为我不想看到本地服务,因为它们可能不会影响网络利用率)。

要带走的一些东西:

  1. 需要了解Ubuntu日志以进行故障排除。
  2. 需要了解更多关于tcpdump的信息,所以我将从 本教程Daniel Miessler 开始。

编者注:这个答案是指 tinker的blogspot文章 仅适用于受邀用户。由于这个答案有可观的支持,所以它很有价值。我在 Wayback Machine 上找到了一篇文章的副本。并包括在这里。

6
tinker