넷호그 구문 분석

넷호그 구문 분석

넷호그 구문 분석

구문 분석하려는 출력nethogs-d 1 -t다음 형식으로:

5.65273 767.912
14.2687 1681.15
19.9011 2309.54

첫 번째(또는 두 번째) 열은 다음을 나타냅니다.모두내 컴퓨터가 전송(또는 수신)하는 초당 KB 수입니다. 각 라인은 1초 간격으로 측정한 값입니다(-디인수).

지금까지 나의 시도

실행하여

sudo nethogs -d 1 -t

다음과 같은 원시 출력을 얻습니다.

Adding local address: 192.168.0.23
Adding local address: fe80::cb1b:6973:f77f:34
Ethernet link detected
Waiting for first packet to arrive (see sourceforge.net bug 1019381)

Refreshing:
unknown TCP/0/0 0   0

Refreshing:
/usr/lib/firefox/firefox/12576/1000 4.07988 543.749
/opt/google/chrome/chrome/2441/1000 1.57285 224.163
unknown TCP/0/0 0   0

Refreshing:
/usr/lib/firefox/firefox/12576/1000 11.9787 1330.22
/opt/google/chrome/chrome/2441/1000 2.26895 350.36
unknown TCP/0/0 0   0

Refreshing:
/usr/lib/firefox/firefox/12576/1000 17.6111 1958.61
/opt/google/chrome/chrome/2441/1000 2.26895 350.36
unknown TCP/0/0 0   0

명령을 실행하여

sudo nethogs -d 1 -t 2>&1 | sed '1,5d;/Refreshing:/d;s_\t_ _g'

다음과 비슷하게 더 깔끔한 출력을 생성할 수 있었습니다.

unknown TCP/0/0 0 0

/usr/lib/firefox/firefox/12576/1000 4.07988 543.749
/opt/google/chrome/chrome/2441/1000 1.57285 224.163
unknown TCP/0/0 0 0

/usr/lib/firefox/firefox/12576/1000 11.9787 1330.22
/opt/google/chrome/chrome/2441/1000 2.26895 350.36
unknown TCP/0/0 0 0

/usr/lib/firefox/firefox/12576/1000 17.6111 1958.61
/opt/google/chrome/chrome/2441/1000 2.26895 350.36
unknown TCP/0/0 0 0

이제 여기서 원하는 출력으로 어떻게 이동합니까? 나는 사용하려고 다음과 같이 하나의 측정 결과를 합산합니다.

sudo nethogs -d 1 -t 2>&1 | sed '1,5d;/Refreshing:/d;s_\t_ _g' | awk 'BEGIN{sent=0; recv=0;};{if (NF >= 2) sent+=$(NF-1); recv+=$NF;}; END{print sent, recv;};'

그러나 이것은 어떤 출력도 생성하지 않습니다. 출력을 넣을 수 있어요sed파일에 넣은 다음 적용하십시오.하지만 저는 이를 수행하고 제가 선호하는 지속적인 출력을 제공하는 보다 직접적인 방법이 있다고 생각합니다.

답변1

슬래시로 시작하는 줄을 고려하세요.

$ awk '/^[/]/ { sent+=$(NF-1); recv+=$NF }
       /^[^/]/ && sent>0 && recv>0 { print sent, recv; sent = recv = 0 }' file
5.65273 767.912
14.2477 1680.58
19.8801 2308.97

이는 슬래시 문자로 시작하는 줄에 추가되거나 그 줄에서 sent추가 됩니다. recv슬래시 문자로 시작하지 않는 행이 발견되면 현재 누적된 sent합계 recv값이 출력됩니다(그런 다음 0으로 재설정됩니다). 변수에 0보다 큰 값이 포함된 경우에만 출력이 발생합니다.

관련 정보