有没有办法找出 Linux 中哪些应用程序使用了最多的带宽?

有没有办法找出 Linux 中哪些应用程序使用了最多的带宽?

我正在寻找一个可以显示每个进程占用多少带宽的实用程序。它应该只打印数据并退出,因为我想将该列表输入到 conky 中。

答案1

你可以试试网络猪

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

NetHogs_截图

答案2

列出了不少这里

但我最喜欢的还是伊夫托普tcpdumpWireshark也是一个非常不错的选择。

答案3

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

如果atop不行,则使用netstat -anp --inet(以 root 身份)提供哪些进程正在使用哪些 TCP/UDP 端口的列表(或可能用于lsof此目的)。从那里,只需遍历每个有打开套接字的进程,然后使用ltrace -S或附加到该进程strace以查看读取、写入、发送和接收,或使用tcpdump过滤器指定您的本地 IP 地址和列出的 TCP/UDP 端口。

atop无疑是其中最方便的……如果您安装了它和必要的内核支持。过去,我曾让客户和雇主设置特殊系统(不同于他们的生产映像),其唯一目的是支持使用 进行 I/O 分析atop。但是,这些其他技术将帮助您实现这一目标。

我确信我们也可以使用 SystemTap 来做一些事情……但我不知道有任何简单的预制配方可以做到这一点。SystemTap 在很大程度上是一种编程分析工具。

相关内容