这个问题可能听起来相当重复,但有一些微妙的细节使它有点不同。
我正在寻找一个简单的工具(适用于 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/