Мне нужно отслеживать сетевую активность процесса и пропускную способность соединения. Поэтому я решил использовать 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**
Я хочу напечатать значение в правом нижнем углу, но не знаю, как это сделать. Вот2-я проблема=> решено fedorqui!
Ребята, вы можете мне помочь? Буду признателен за любые идеи!
решение1
Для2-я проблема, ты можешь сделать:
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.