有没有办法找出在 Linux 中使用大部分带宽的应用程序?

vav*_*ava 57 networking linux bandwidth monitoring

我正在寻找一种实用程序,它可以显示每个进程使用了​​多少带宽。它应该只打印数据并退出,因为我想将该列表提供给 conky。

Mil*_*lde 71

你可以试试NetHogs

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

NetHogs_截图


Bin*_*fit 6

这里列出了很多

然而,我最喜欢的仍然是iftoptcpdumpWireshark也是一个非常好的选择。

  • 如果您不启用混杂模式,它应该只捕获定向到您的主机的流量。 (5认同)

Jim*_*nis 5

尝试atop ... 要充分利用它,您可能需要启用一些额外的内核补丁(I/O 会计补丁)。

如果atop不是一个选项,则使用netstat -anp --inet(以 root 用户身份)提供哪些进程正在使用哪些 TCP/UDP 端口(或可能lsof用于该端口)的列表。从那里简单地迭代每个有一个开放套接字的进程,并使用ltrace -Sstrace查看读取、写入、发送和接收,或使用tcpdump指定本地 IP 地址和 TCP/UDP 端口的过滤器连接到它那些被列出。

atop当然是其中最方便的……如果你有它并安装了必要的内核支持。过去,我曾让客户和雇主设置特殊系统(不同于他们的生产映像),其唯一目的是使用atop. 然而,这些其他技术会让你到达那里。

我相信我们也可以使用 SystemTap 做一些事情……但我不知道有任何简单的预煮食谱可以做到这一点。SystemTap 在很大程度上是一个编程分析工具。