网上有很多适用于Linux操作系统的开源网络监视工具。比如说:

    你可以用命令iftop来检查带宽使用情况、netstat用来查看接口统计报告、还有其他的一些工具Bandwidthd、Speedometer、Nethogs、Darkstat、jnettop、ifstat、iptraf、nload和ntop等。

    但是这些工具都是统计网卡的进出数据,如果你想要找一个像windows上360安全卫士那样,能够按进程实时统计每个程序网络带宽利用率,那么NetHogs就是你所需要的唯一工具。

    top可以查看进程占用的cpu、内存等信息,可以随时监测占用最大cpu和内存的进程是哪个。Nethogs可以说是网络带宽top,他可以查看进程占用的带宽信息,和top一样,随时刷新。

    Nethogs是一个终端下的网络流量监控工具,它有别于其他统计和监控网卡流量工具,特别之处在于可以监控每个进程的网络带宽占用情况,这样可以更直观获取网络使用情况。它支持IPv4和IPv6协议、支持本地网卡及PPP链接。如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况.这样就很容易找出哪个程序跑飞了然后突然占用你的带宽.


一、下载安装

wget http://jaist.dl.sourceforge.net/project/nethogs/nethogs/0.8/nethogs-0.8.0.tar.gz -P /usr/local/src

yum install -y gcc gcc-c++ libpcap libpcap-devel

cd /usr/local/src

tar xf nethogs-0.8.0.tar.gz

cd nethogs

make && make install


二、NetHogs用法

nethogs [option] [device(s)]

    该程序需要 root 权限,默认是监控 eth0 网卡 ,所以直接输入 sudo nethogs 也可以,如果有多网卡的话就必须进行指定。

# nethogs 
Nethogs - 网络流量监控工具_第1张图片

    正如上图所示,send列和received列显示的是按照每个进程的流量统计。总的收发数据带宽在最下方,而且可以用交互命令控制排序。


三、NetHogs 命令行参数

    以下就是NetHogs命令行的参数,用’-d’来添加刷新频率参数,`device name` 用来检测给定的某个或者某些设备的带宽(默认是eth0).例如:设置5秒钟的刷新频率,键入如下命令即可:

# nethogs -d 5 


如果只用来监视设备(eth0)的网络带宽可以使用如下命令:

# nethogs eth0 


如果要同时监视eth0和eth1接口,使用以下命令即可:

# nethogs eth0 eth1 


其他参数和用法:

-d: delay for refresh rate,default is 1. 

-h: display available commands usage. 

-p: sniff in promiscious mode (not recommended). 

-t: tracemode. 

-b: bughunt mode - implies tracemode.

-V: prints Version info.

  

NetHogs 交互控制

以下是NetHogs的一些很有用的交互控制(键盘快捷键):

m      cycle between display modes (kb/s, kb, b, mb)

r      sort by 'received’

s      sort by 'sent’

q      quit

Nethogs - 网络流量监控工具_第2张图片

Nethogs - 网络流量监控工具_第3张图片

Nethogs - 网络流量监控工具_第4张图片