系统相关
首页 > 系统相关> > linux – 测量每个程序和月份的网络消耗

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

作者:互联网

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

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

(它也可以是每个进程而不是每个程序,但后来我必须手动合并条目)

经过有意义的研究(包括Stack Exchange上的许多类似问题),我还没有找到这样的监视器.也许这在Linux下是不可能的.或许这有点不寻常的需要.

解决方法:

使用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的另一种解决方案

但我更喜欢第一种解决方案.

标签:linux,networking,bandwidth
来源: https://codeday.me/bug/20190810/1641307.html