Preciso monitorar as atividades de rede de um processo e a largura de banda da conexão. Então decidi usar nethog
e netperf
combinar grep
e awk
gravar os valores em um arquivo.
nethog
comando: nethogs -t eth0 | grep firefox | awk '{ print $3 }'
(quero medir a velocidade de upload/download).O 1º problemaé que o comando não imprime nada.
Mais detalhes: comando: nethogs -t eth0 | grep firefox
saída:
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
Quero os dois valores no canto inferior direito. Mas como você pode ver a saída não é consistente (o espaço), adicione | awk '{print $3}' most of the time return nothing
. E não posso consertar isso.
netperf
comando: netperf -H 192.168.1.10
e a saída é:
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**
Quero imprimir o valor no canto inferior direito, mas não tenho ideia de como. Esse é o2º problema=> resolvido pelo fedorqui!
Vocês podem me ajudar? Qualquer ideia será apreciada!
Responder1
Para o2º problema, você pode fazer:
your_command | tail -1 | awk '{print $NF}'
Isso imprimirá o último campo da última linha da entrada fornecida.
Responder2
Vamos começar com isso:
nethogs -t eth0 | awk '/firefox/{ print $3 }'
netperf -H 192.168.1.10 | awk 'END{ print $NF }'
Se isso não funcionar, forneça exemplos de entrada para os scripts awk, resultados esperados e explicações.
Você precisaria de:
netperf -H 192.168.1.10 | awk '{v=$NF} END{ print v }'
com alguns awks, pois eles não são exigidos pelo POSIX para reter campos na seção END.