프로세스의 네트워크 활동과 연결 대역폭을 모니터링해야 합니다. 그래서 나는 값을 파일에 사용 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 }'
POSIX에서 END 섹션의 필드를 유지하는 데 필요하지 않기 때문에 일부 문제가 있습니다.