프로그램별, 월별 네트워크 사용량 측정

프로그램별, 월별 네트워크 사용량 측정

저는 프로그램별로 월별(또는 일일 등) 대역폭 보고서를 발행할 수 있는 영구적으로 실행되는 모니터를 찾고 있습니다. 원하는 출력의 예:

Bandwidth consumption: last 30 days
==============
Program     Downloaded   Uploaded
/usr/bin/ssh  30MB       100MB
/usr/bin/java 9000MB     3000MB

(프로그램별이 아닌 프로세스별일 수도 있지만 항목을 수동으로 병합해야 합니다)

많은 연구(Stack Exchange에 대한 많은 유사한 질문 포함) 후에도 여전히 그러한 모니터를 찾지 못했습니다. 어쩌면 이것은 Linux에서는 불가능할 수도 있습니다. 아니면 비정상적인 요구일 수도 있습니다.

답변1

nethogs -t프로세스별 사용량을 캡처하고 출력을 구문 분석하는 데 사용됩니다 . ~에서https://boopathi.in/blog/capturing-per-process-bandwidth-usage-using-nethogs/

sh -ic "{ /usr/sbin/nethogs -t eth1 &> output; \
kill 0; } | { sleep $TIMEOUT; \
kill 0; }" 3>&1 2>/dev/null

출력 필드는 다음과 같습니다.

Process / Process id / User id    sent kbps    recv kbps

다음을 사용하여 출력을 구문 분석합니다.https://github.com/boopathi/nethogs-parser

SO의 또 다른 솔루션:https://stackoverflow.com/a/20705080/3812704

그러나 나는 첫 번째 해결책을 선호합니다.

답변2

수동으로 축적하고 처리하거나 netstat일부 셸에서 처리할 수 있습니다.iptrafsort

Linux의 대부분의 모니터는 런타임이며 일부는 명령을 받습니다.여기.

관련 정보