dep*_*ted 5 linux networking bandwidth
我正在寻找一个永久运行的监视器,它可以以每个程序的方式发出每月(或每天等)的带宽报告。示例所需的输出:
Bandwidth consumption: last 30 days
==============
Program Downloaded Uploaded
/usr/bin/ssh 30MB 100MB
/usr/bin/java 9000MB 3000MB
Run Code Online (Sandbox Code Playgroud)
(它也可以是每个进程而不是每个程序,但是我必须手动合并条目)
经过有意义的研究(包括许多关于 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
Run Code Online (Sandbox Code Playgroud)
输出字段为:
Process / Process id / User id sent kbps recv kbps
Run Code Online (Sandbox Code Playgroud)
并使用https://github.com/boopathi/nethogs-parser解析输出
SO的另一个解决方案:https ://stackoverflow.com/a/20705080/3812704
但我更喜欢第一个解决方案。