Мне нужно контролировать сетевую активность процесса и пропускную способность соединения. Поэтому я решил использовать nethog и netperf сочетании с grep и awk для записи значений в файл.

nethog : nethogs -t eth0 | grep firefox | awk '{ print $3 }' (я хочу взять скорость загрузки / выгрузки). Первая проблема в том, что команда ничего не печатает.

Более подробно: команда: nethogs -t eth0 | grep firefox вывод 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!

Ребята, вы можете мне помочь? Любые идеи будут оценены!

2 ответа2

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.

1

Для 2-й задачи вы можете сделать:

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

Это напечатает последнее поле последней строки данного ввода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .