Monitor Per Process Network Bandwidth Usage with Nethogs

NetHogs is an open-source, small ‘net top’ tool. Instead of breaking the traffic down per protocol or per subnet, like most tools do, it groups bandwidth by process. NetHogs does not rely on a special kernel module to be loaded.

If there’s suddenly a lot of network traffic, you can fire up NetHogs and immediately see which PID is causing this. This makes it easy to identify programs that have gone wild and are suddenly taking up your bandwidth.

Install NetHogs

On RHEL/CentOS, NetHogs is not available in official RHEL/CentOS repositories, so let us add EPEL repository to install NetHogs:

[root@server ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

Install NetHags using the following command:

[root@server ~]# yum install nethogs -y

On Ubuntu/Debian:

sk@sk:~$ sudo apt-get install nethogs

Usage

Open up the terminal and enter the following command:

sk@sk:~$ sudo nethogs

sk@sk: ~_005By default, NetHogs listens to eth0 interface and displays the bandwidth consumption of the processes. As you see above, the SENT and RECEIVED columns shows the amount of traffic being used around per process. The total bandwidth usage is shown in the TOTAL column.

To cycle between bandwidth usage units, hit “m” (Available units: KB/sec, KB, B, MB). To sort by “sent” traffic or “received” traffic, hit “s” or “r” respectively. You can quit nethogs by hitting “q”.

More Options

To listen a particular interface, for example eth1, enter the following command:

sk@sk:~$ sudo nethogs eth1

To monitor bandwidth usage of eth1 interface only, use the following command:

sk@sk:~$ sudo nethogs -device eth1

Also you can set refresh intervals use the parameter -d along with number of seconds.

For example, to set the refresh interval every 5 seconds, enter the following command:

sk@sk:~$ sudo nethogs -d 5

For more information about NetHogs refer the man pages:

sk@sk:~$ man nethogs