如何在linux中获取进程或端口网络带宽使用率

如何在linux中获取进程或端口网络带宽使用率,linux,networking,process,port,flow,Linux,Networking,Process,Port,Flow,我想了解每个进程的网络带宽使用情况。我发现了很多关于这个的信息,比如iftop。。。 但是它们都是通过捕获数据包(libpcap)获得进程宽度使用率的,通过我在linux中的测试,它消耗了大量cpu(%10-%15),并且流速度是11MByte/s。如果我能得到每个端口的流量,我就能解决这个问题,因为我已经得到了关于所用流程端口的表格。因此,我想知道是否有其他方法可以在不捕获数据包的情况下获取端口流。据我所知,Linux不提供用于计算网络使用率的pcap替代接口/proc//stat(us)包含

我想了解每个进程的网络带宽使用情况。我发现了很多关于这个的信息,比如iftop。。。
但是它们都是通过捕获数据包(libpcap)获得进程宽度使用率的,通过我在linux中的测试,它消耗了大量cpu(%10-%15),并且流速度是11MByte/s。如果我能得到每个端口的流量,我就能解决这个问题,因为我已经得到了关于所用流程端口的表格。因此,我想知道是否有其他方法可以在不捕获数据包的情况下获取端口流。

据我所知,Linux不提供用于计算网络使用率的pcap替代接口
/proc//stat(us)
包含各种进程信息,但不包含有关网络访问的信息,只包含包括磁盘访问在内的总I/O使用量


类似地,要知道端口,您必须至少读取IP头。因此,我假设不可能显著加快速度,因为分析用户空间中的所有数据包总是很慢。用于此任务的内核模块似乎是唯一的选项。

据我所知,Linux没有为pcap提供用于计算网络使用率的替代接口
/proc//stat(us)
包含各种进程信息,但不包含有关网络访问的信息,只包含包括磁盘访问在内的总I/O使用量


类似地,要知道端口,您必须至少读取IP头。因此,我假设不可能显著加快速度,因为分析用户空间中的所有数据包总是很慢。此任务的内核模块似乎是唯一的选项。

/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} '
cat/proc/“pid”/net/netstat\

awk'(f==0){name=$1;i=2;而(i
/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} '
cat/proc/“pid”/net/netstat\

awk'(f==0){name=$1;i=2;而(iYou的意思是我必须为内核编写补丁?但是我的用户不能允许我这么做。当然,你不必这么做。但是你问的是一个快速解决方案。你的意思是我必须为内核编写补丁?但是我的用户不能允许我这么做。当然,你不必这么做。但是你问的是一个快速解决方案。Hi@BusyTraveler,这实际上不是真的。尽管如此尽管netstat proc文件位于文件夹下,但它实际上仍然是系统级的netstat度量,至少根据我在Ubuntu 16.04上的测试,内核版本为4.15.0-46-generic。实际上,在这个链接中可以找到这个问题的一个好答案:这里有一句话:“/proc/net包含有关常规网络的统计信息,/proc//net/dev包含从进程的角度来看有关网络的统计信息。"如果所有进程都在同一个网络名称空间中,那么这些进程的所有计数器都是相同的。Hi@BusyTraveler,这实际上不是真的。尽管netstat proc文件在文件夹下,但它实际上仍然是系统级的netstat度量,至少根据我在Ubuntu 16.04上的测试,内核版本为4.15.0-46-gene实际上,在这个链接中可以找到这个问题的一个很好的答案:这里只带一句话:“/proc/net包含关于一般网络的统计信息,而/proc//net/dev包含从进程的角度来看关于网络的统计信息。”如果所有进程都在同一网络命名空间中,那么这些进程的所有计数器都是相同的。