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.
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
sk@sk:~$ sudo apt-get install nethogs
Open up the terminal and enter the following command:
sk@sk:~$ sudo nethogs
By 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”.
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