我需要監視進程的網路活動和連線的頻寬。所以我決定使用nethog
並netperf
結合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 }'
與一些 awks 一起使用,因為 POSIX 不要求它們保留 END 部分中的欄位。