来自 nethog 和 netperf 的 Grep 值

来自 nethog 和 netperf 的 Grep 值

我需要监控进程的网络活动和连接带宽。因此我决定使用nethognetperf结合grep并将awk值写入文件。

nethog命令:(nethogs -t eth0 | grep firefox | awk '{ print $3 }'我想测量上传/下载速度)。第一个问题该命令不打印任何内容。

更多细节:命令:nethogs -t eth0 | grep firefox输出:

usr/lib/firefox/firefox-bi�)/4956/1000  0.338867    0.239063
/usr/lib/firefox/firefox-bi�)/4956/1000 0.543555    0.274219
/usr/lib/firefox/firefox-bi�)/4956/1000 0.794531    0.489844
/usr/lib/firefox/firefox-bi�)/4956/1000 0.794531    0.489844
/usr/lib/firefox/firefox-bi�)/4956/1000 0.749023    0.589844
/usr/lib/firefox/firefox-bi�)/4956/1000 1.30098 3.47617
/usr/lib/firefox/firefox-bi�)/4956/1000 1.90449 8.0127
/usr/lib/firefox/firefox-bi�)/4956/1000 5.31641 25.0033
/usr/lib/firefox/firefox-bi�)/4956/1000 8.60762 42.0176

我想要右下角的两个值。但正如您所见,输出不一致(空格),请添加| awk '{print $3}' most of the time return nothing。我无法修复此问题。

netperf命令:netperf -H 192.168.1.10输出为:

Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

524288 524288 262144    10.00    **718.62**

我想打印右下角的值,但不知道如何操作。这就是第二个问题=> 由 fedorqui 解决!

你们能帮我吗?任何想法我都会很感激!

答案1

为了第二个问题, 你可以做:

your_command | tail -1 | awk '{print $NF}'

这将打印给定输入的最后一行的最后一个字段。

答案2

让我们从这个开始:

nethogs -t eth0 | awk '/firefox/{ print $3 }'

netperf -H 192.168.1.10 | awk 'END{ print $NF }'

如果这些不起作用,请为 awk 脚本提供示例输入、预期输出和解释。

你需要:

netperf -H 192.168.1.10 | awk '{v=$NF} END{ print v }'

使用一些 awk,因为 POSIX 不要求它们保留 END 部分中的字段。

相关内容