如何确定进程在 Linux 中使用了多少带宽

nel*_*aro 11 networking linux bandwidth monitoring

有时我会看到使用gnome-system-monitor 的带宽使用率高达 300kbit/s。我只是无法弄清楚是什么导致了它。我想知道像那样使用我的网络的过程或程序是什么?

我在不同的机器和服务器上执行 ssh,我真的希望能够监控带宽使用情况。了解人们使用哪些实用程序来查看正在使用哪些带宽以及哪些应用程序/程序/进程/或线程将非常有用。我什至不知道从哪里开始寻找。

我找到的两个小程序都不够用。bmonbwm-ng 以及诸如wireshark数据包嗅探器)之类的工具是矫枉过正的。我想要中间的东西,最好是基于文本控制台的。

Šim*_*óth 11

嗯,有iftop但只显示源和目的地,而不是导致流量的程序。

编辑:

刚发现nethogs。它完全符合您的要求。


bar*_*baz 11

您可以使用

iptraf
Run Code Online (Sandbox Code Playgroud)

或者

iftop -P
Run Code Online (Sandbox Code Playgroud)

识别消耗大量带宽的连接。连接由一对 (localip:port, remoteip:port) 标识。然后你可以使用

netstat -tunp
Run Code Online (Sandbox Code Playgroud)

查找使用该连接的进程。但是,大多数情况下,您只能通过查看端口来判断哪个服务负责,例如,如果连接localip:80在本地使用,则可能是您的网络服务器;-)