测量每个程序和每月的网络消耗

测量每个程序和每月的网络消耗

我正在寻找一个永久运行的监视器,它可以按每个程序的方式发出每月(或每日等)带宽报告。所需输出示例:

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

您可能希望在某个 shell 中通过手动操作来累积和处理netstat或。iptrafsort

Linux 中的大多数监视器都是运行时的,有些是征用的这里

相关内容