【问题标题】:Capture nethogs output in log file在日志文件中捕获 nethogs 输出
【发布时间】:2013-12-20 11:47:30
【问题描述】:

我想检查我的进程使用的网络带宽。 为此,我发现 nethogs 工具很有用。使用这个工具,我可以看到哪个进程正在消耗网络带宽和进程行为。 但是如何从 nethogs 为我的进程捕获数据并将其存储到日志文件中?

【问题讨论】:

  • @anubhava :感谢您的宝贵时间,但它不起作用。它失败并出现错误“等待第一个数据包到达(请参阅 sourceforge.net 错误 1019381)”
  • @l0b0:通过链接。 nethogs 不会提供大量输出。它只是像顶部一样简单地刷新屏幕。还有其他方法吗?

标签: linux bash


【解决方案1】:

我不知道这些选项是什么时候实现的,但你可以使用nethogs -tnethogs -b,pid 和 user 奇怪地放在 pid 命令字符串的末尾,但很容易解析。

我认为你需要使用最新的 cvs 版本 0.8.1-SNAPSHOT

【讨论】:

  • 例如采集数据5秒打印输出一次:nethogs -c 1 -d 5 -t
  • @Richlv 这很好,但对于实际的 5 秒收集,-c 2 似乎是必要的。可能第一个不算数
【解决方案2】:

您可以在后台以跟踪模式运行nethogs,并将输出写入如下文件:

sudo nethogs -t eth1 &> /var/tmp/nethogs.log & 

按照here 的描述下载并构建nethogs-parser

那么在你积累了足够的数据之后,你就可以运行解析器来查看结果了:

./hogs -type=pretty /var/tmp/nethogs.log 

完成收集数据后,请确保终止正在运行的nethogs 进程。

更多关于自动化任务的信息here

【讨论】:

  • 关于在该站点自动执行任务,我首先得到了即时的空日志。在 monitor.sh 中,我必须将 sh 更改为 /bin/bash 才能获得报告(首先尝试 30 秒超时)
【解决方案3】:

您可以使用此命令捕获输出:

nethogs -d 5 | sed 's/[^[:print:][:cntrl:]]//g' > output.txt

【讨论】:

  • 这行不通。结果 output.txt 不显示任何统计信息。
  • 请随意创建一个新问题,因为这是旧答案,并且此实用程序的输出可能会因您的版本和系统而异。
  • @ValerioSchiavoni 像nethogs -t 一样使用,输出非常可重用!
【解决方案4】:

nethogs的正确命令是

 nethogs -d 1 eth0 > output.txt

您需要指定网络接口,否则将使用默认接口 eth0。有时,nethogs 可能由于网络接口的原因而无法显示正确的输出。最好在实验期间提供网络接口并产生一些流量。您可以通过添加> output.txt 将输出打印到文件中 -d 参数指定显示输出的频率。在这里,我给了 1,这表示输出将每秒显示一次。

希望这可能有用。

【讨论】:

  • 这也不起作用:No devices to monitor. Use '-a' to allow monitoring loopback interfaces or devices that are not up/running
  • 这不起作用。没有> output.txt,它会显示输出,但是当我将重定向添加到文件时,只有写入文件的内容是Ethernet link detected
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2020-08-27
  • 2020-02-28
  • 2012-10-21
  • 1970-01-01
  • 2017-01-30
相关资源
最近更新 更多