我想获取每个进程的网络带宽使用情况。我找了很多这方面的资料,比如iftop,nethogs http://nethogs.sourceforge.net/, Linux进程浏览器 http://sourceforge.net/projects/procexp/...
但它们都是通过捕获数据包(libpcap)来获取进程品牌宽度使用情况,根据我在linux中的测试,它消耗了大量的cpu(%10-%15),并且流量速度为11MByte/s。如果我可以获得每个端口的流量,我就可以解决这个问题,因为我已经获得了有关所使用的过程端口的表格。所以我想知道是否有其他方法可以在不捕获数据包的情况下获得端口流量。
下面的答案实际上并不正确。该文件不包含每个进程的信息
/proc/[pid]/net/netstat
包含每个进程的带宽信息,其中 pid 是进程 ID。
cat /proc/"pid"/net/netstat | \
awk '(f==0) {name=$1; i=2; while ( i<=NF) {n[i] = $i; i++ }; f=1; next} \
(f==1){ i=2; while ( i<=NF){ printf "%s%s = %d\n", name, n[i], $i; i++}; f=0} '
参考:https://sa-chernomor.livejournal.com/9858.html https://sa-chernomor.livejournal.com/9858.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)