myarchmage 发表于 2012-03-29 10:04

求获得进程流量的方法

想实现一个功能,就是统计每个进程的上下行流量。
我的初步想法是找到进程的端口,然后对端口的流量进行统计。
有几个问题:
1.如何找到进程对应的端口
2.端口和进程在solaris中是否是一一对应的
3.统计端口的流量用什么方法
或者,请各位大大传授个新的获得进程流量的方法。多谢

myarchmage 发表于 2012-03-30 09:24

好吧,自己解答一下
其实我是想在macos中解决这一问题,由于macos的相关内容实在太少,就跑到这里询问一下
这是我自己在macos中通过查询命令和实验得到的方法,是否正确或者简便,还需要大家鉴定和指正
1.找到进程对应的端口,并得到流量信息
a.首先使用netstat -f inet,找到所有正在被占用的端口
b.然后逐个端口进行扫描,使用lsof -i:端口号,查找端口对应的进程(在试验中,有些端口使用此命令没有任何输出,不知道是怎么回事)
c.最后再次使用netstat -i 端口号 -w 秒数(统计间隔)。这样可以得到该端口的流量信息,然后将该进程对应的所有端口的流量加起来,应该就是该进程的流量统计(其中,应该加上丢掉的包,毕竟这个也是你收到的流量一部分)
2.经过试验,发现有道桌面词典pid=214,对应两个不同的端口49663,49662。对这两个端口使用netstat -i命令发现都有包发出和接受,这就说明,一个进程对应多个端口

3.一个端口是否对应多个进程,这个应该不会,理由没有
页: [1]
查看完整版本: 求获得进程流量的方法