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

Mal*_*rba 257 networking bandwidth

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

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

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

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

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

小智 311

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

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

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

例子: sudo nethogs wlan0

  • 如果您使用无线,则无需通过设备。`sudo nethogs` 工作正常。 (8认同)
  • 请注意导致某些版本的“nethog”无法使用的错误:http://askubuntu.com/questions/726601/nethogs-%E2%86%92-creating-socket-failed-while-establishing-local-ip-are -你根 (4认同)
  • 已经有一段时间了,但这个答案确实要简单得多。 (3认同)
  • `nethogs` 很好,但它似乎在我的计算机上使用 _way_ 比 `iftop` 更多的 cpu (2认同)
  • 此外,nethogs 根本没有捡到所有东西!系统监视器显示我以 47 Mbps 的速度持续接收(这是巨大的带宽使用量!),但 nethogs 根本没有显示此流量! (2认同)
  • 我和@GabrielStaples 有同样的问题。我看到系统监视器和 nethogs 之间的巨大差异。 (2认同)

Li *_* Lo 67

使用iftop来定位接收流量最多的机器上的TCP端口。然后用于sudo netstat -tup定位“拥有”该端口的进程。

这就是你要找的过程。

PS:也应该适用于 UDP。

  • 由于 iftop 屏幕上有很多数字,我创建了一个屏幕截图,我在其中突出显示了您感兴趣的数字。将其与系统监视器进行比较。屏幕截图位于 http://imgur.com/2iuiI 。“lo”代表本地主机,它是一个接口,本地程序可以通过它相互通信。 (3认同)
  • 我接受答案,因为它确实回答了原始问题。但如果我能弄清楚这里发生了什么,我会很高兴的。 (2认同)

Mar*_*ppi 16

您可能想要研究ntop- 应该在进程级别监视网络活动。您可以ntop在软件中心或通过sudo apt-get install ntop

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

  • 不适用于 ubuntu 17.04 (zesty) (4认同)
  • 请参阅 http://packages.ntop.org/apt-stable/ 以获取更高版本 ubuntu 的存储库。也是`apt-get install ntopng` (2认同)
  • 它有自己的本地服务器,而且很混乱...... (2认同)

Den*_*ker 8

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


tin*_*ker 6

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

我的笔记

Ubuntu盒子连接信息

今天早上启动我的 Ubuntu 10.04 桌面,发现几分钟后互联网连接正在爬行。我以前在 Windows 机器上见过这个,而且 99% 的时间它都是间谍软件。所以,我需要调查......命令行风格。

tcpdump. 显示 Ubuntuone 发疯了。

系统>首选项>Ubuntu 一。关闭所有同步。做到了。

所以,我想我想查看所有网络连接以及它们在做什么。我可以

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

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

一些需要带走的东西:

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

编者注:此答案指的是tinker 的 blogspot 文章,该文章仅供受邀用户使用。由于这个答案有可观的赞成票,所以它很有价值。我找到了一篇关于Wayback Machine的文章。并包括在这里。


rog*_*ack 5

这是我喜欢的一个,它告诉你从网络中读取的内容最多,无论如何(似乎对哪个“写入”网络不起作用,所以......你得到一半)。

$ sudo apt install dstat
then
$ dstat --net --top-io-adv
-net/total- -------most-expensive-i/o-process-------
 recv  send|process              pid  read write cpu
   0     0 |chrome               1885   19k  17k0.4%
 504B  734B|chrome               1923    0   66k0.2%
 651k   18k|chrome               1923  597k 593k2.0%
  19k   26k|gnome-terminal-      25834 429B  59k0.8%

Run Code Online (Sandbox Code Playgroud)