Linux 监控特定进程(PID)带宽消耗的工具

Linux 监控特定进程(PID)带宽消耗的工具

是否有工具或命令可以帮助捕获特定进程(PID)的带宽消耗,就像系统监视器一样,但对于单个特定进程,如以下屏幕截图所示在此输入图像描述

我会对至少将此类历史记录导出到文件的命令行工具感到满意。 (我使用的是 Ubuntu 16.04)

更新1

我至少想要一个像这样的工具网猪可以输出到文件中(Nethogs 仅捕获 TCP 连接)一个针对 TCP 和 UDP 的类似工具会很棒

更新2

任何脚本、其他工具(如wireshark)的组合也会有所帮助。

答案1

你看过上面的工具吗?根据它的手册页:

“如果已安装内核模块‘netatop’,则会显示每个进程的网络负载。”

答案2

因此,由于我没有找到任何简单/明确/“立即开始运行”的解决方案,我不得不做出一个适度的解决方案,进行修复、重构和更多选择。

->https://github.com/AymenDaoudi/NeTraf

答案3

Nethogs 可能就是您想要的。

Debian/Ubuntu/等

apt-get install nethogs

或 rhel/cent/等

yum install nethogs

您在网络接口上运行它,例如

nethogs eth0

然而,它的输出是每个进程发送和接收的带宽。您还可以监控多个接口。

描述 NetHogs 是一个小型“网顶”工具。它不像大多数此类工具那样按协议或按子网分解流量,而是按进程对带宽进行分组,并且不依赖于加载的特殊内核模块。因此,如果突然出现大量网络流量,您可以启动 NetHogs 并立即查看哪个 PID 导致了这种情况,如果是某种旋转进程,则将其终止。

更新:OP要求输出到文件。你可以用 nethogs 来做到这一点:

nethogs -d 1 eth0 > output.txt

-d 指定写入之间的时间间隔...因此您可以执行上述命令并获得所需的结果。

更新2OP 说 TCP 和 UDP 是必需的。然后尝试使用网络顶。有点老了,但是有 TCP 和 UDP。它可以在 deb/ubuntu 中使用,我认为是 RHEL 衍生品。例子:

jnettop --display text -t 5 --format CSV

这应该可以通过管道传输到文件。

答案4

nethogs 工具将有助于监控每个进程的网络流量。您可以使用nethogs -t。这里的-t表示遍历。

要显示发送和接收总数,请使用以下命令。 nethogs -t -v3

您可以将输出重定向到文件中以进行进一步的进程过滤。

相关内容