一、概述

inux下的流量查看工具很多,如:iptraf、nload、ifstat、sar等。当然每个工具都有各自的优势。不过以上所有工具有没一款都针对服务进程所占用的流量的具体情况给出结果。(我是不知道,如果有以上工具有这方面的功能,麻烦一定相告)因为工作方面的需要,又需要一款这样的工具。后来从网上就找到了nethogs 。

nethogs可以显示每个进程的带宽占用情况,能够更直观获取网络使用情况。nethogs支持 IPv4 和 IPv6 协议,支持本地网卡及 PPP 链接。不过该程序运行的必须具有root权限。

二、安装

我这里以centos 5.X 64位为例:

1wget ftp://ftp.muug.mb.ca/mirror/fedora/epel/5/x86_64/nethogs-0.7-3.20080627cvs.el5.x86_64.rpm
2rpm -ivh nethogs-0.7-3.20080627cvs.el5.x86_64.rpm

更多下载地址:

官方主页

如果想用源码包安装的可以使用源码包下载安装。源码包安装不需要编译,直接make ;make install就行,不过需要libpcap环境。下面是其源码包安装提示:

1make ; make install
2you need the 'libpcap-dev' and 'libpcap' packages.

三、用法

终端输入nethogs即可。常用参数: [-d seconds] [device(s)]

  • -d seconds 是数据刷新时间 如nethogs -d 1 就是每秒刷新一次
  • device(s) 是指定监控的网卡,如nethogs eth1 就是监控eth1网卡。默认是监控 eth0 网卡,如果要监控多网卡的话则必须进行指定。

例:监控eth0,eth1两块网卡,数据刷新时间为3秒

1nethogs -d 3 eth0 eth1

nethogs运行时的控制键:

  • q 退出。
  • m 切换显示总流量或即时流量,总流量可切换三种显示模式B,KB,MB。

nethog

注:对于未使的服务程序会显示unknow ,对于一些网络连结程序还会在program里显示出连接端口和IP及本机连接的端口。sent是发送流量,received为接收流量。

2017-04-02后记

该工具在redhat下一直比较容易安装,之前由于在SuSE下没有试过,发现安装过程中会有包依赖的问题,提示找不到libpcap.h 文件,从其他主机上拷贝一个编译好的执行,报错如下:

1# ./nethogs
2./nethogs: error while loading shared libraries: libpcap.so.1: cannot open shared object file:

解决方法如下:

1zypper in flex bison libpcap0  ncurses-devel
2cp /usr/lib64/libpcap.so.0 /usr/lib64/libpcap.so.1

再次执行,一切正常。最后,nethogs项目目前已移到github上,地址为:https://github.com/raboof/nethogs