linux - 监控进程的网络使用情况

标签 linux ubuntu process network-monitoring

这个问题可能听起来相当重复,但有一些微妙的细节使它有点不同。

我正在寻找一个简单的工具(适用于 Ubunut/Linux)来监视网络使用情况,以便它可以通过 1)单个进程提供网络使用情况的最小值、最大值、平均值和时间图; 2) 系统;仅在进程运行期间。主要要求是我不是在寻找基于 GUI(或终端 GUI,如 top)的工具,但我希望将此监控信息推送到文件中,以便我可以对其执行一些后处理。

我发现以下链接列出了各种选项:http://www.binarytides.com/linux-commands-monitor-network/ 。然而,大多数工具都是基于 GUI 的,非 GUI 的工具不提供上述信息。

任何帮助将不胜感激。

最佳答案

Wireshark 可能会起作用,具体取决于您愿意在多大程度上放松非 GUI 要求以及定位目标进程是否简单。 Wireshark 当然是一个 GUI 应用程序,但它附带的 tshark 命令是 headless 的,可用于将数据包捕获到文件中。捕获接口(interface)上的所有数据包后,您可以在 pcap 文件上再次运行 tshark,以使用 Wireshark“显示过滤器”过滤文件,并仅提取进程的数据包。这一部分可能很简单,也可能不简单,具体取决于您是否可以从网络流量内容、端口或通过添加一些哨兵虚拟数据来识别您的进程。然后您将拥有两个 pcap 文件,一个用于整个网络接口(interface),另一个仅用于您的进程。

capinfos 命令将报告平均吞吐量。 Wireshark 可用于通过菜单“统计 >> IO 图表”生成毫秒(或其他)粒度的流量时间图。至于最小值和最大值,您可以从时间图中观察,也可以使用 editcap 将 pcap 文件分割成 block ,在每个 block 上运行 capinfos 并计算所有 block 的最小值和最大值。

这可能不是最简单的方法,这只是我突然想到的。

关于linux - 监控进程的网络使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894007/

相关文章:

使用 GNU 工具链 (gcc/ld) 从静态库创建共享库

linux - scp 后 C++ 可执行文件无法链接到共享库

php - 下载 php 文件 tar

mysql - Unix : Can't use backquote in MySQL command

linux - gdb coredump - 调用函数或继续执行

python - 使用 SafeConfigParser 在配置文件中设置选项

c++ - 防止 CMake 查找已安装的库而不是 "local"库

javascript - Node JS - 在新进程中执行一串代码

mysql - 安装mysql(shell)而不安装mysqld(服务器)

java - 写入 Java 进程的 InputStream