How to monitor bandwidth usage per process? [duplicate]

I am using Ubuntu 14.04. My internet connection is pretty slow (512 kbps). Sometimes I see that I have no software running which should download anything from the internet, but the system monitor still shows that some download is going on. So I think some hidden software are causing this. Is there a way I can monitor every software that is using internet?


Solution 1:

You can use nethogs Install nethogs tool to monitor all your traffic on an interface.

Install it using

sudo apt-get install nethogs

Now run it using

sudo nethogs <interface name>

For example

sudo nethogs wlan0

enter image description here

For more detail type man nethogs after installing.

Solution 2:

I prefer sudo netstat -tunap

vinny@vinny-Bonobo-Extreme:~$ sudo netstat -tunap 
[sudo] password for vinny: 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8200            0.0.0.0:*               LISTEN      1160/minidlnad  
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      927/dnsmasq     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2543/cupsd      
tcp        0      0 192.168.2.10:58491      198.252.206.149:443     ESTABLISHED 30401/firefox   
tcp        0      0 192.168.2.10:39824      173.194.219.189:443     ESTABLISHED 30401/firefox   
tcp        0      0 192.168.2.10:58569      198.252.206.149:443     ESTABLISHED 30401/firefox   
tcp        0      0 192.168.2.10:59283      173.194.219.18:443      ESTABLISHED 30401/firefox   
tcp6       0      0 ::1:631                 :::*                    LISTEN      2543/cupsd      
tcp6       1      0 ::1:60390               ::1:631                 CLOSE_WAIT  863/cups-browsed
tcp6       1      0 ::1:34718               ::1:631                 CLOSE_WAIT  1469/plasmashell
tcp6       1      0 ::1:60391               ::1:631                 CLOSE_WAIT  863/cups-browsed
udp        0      0 0.0.0.0:1900            0.0.0.0:*                           1160/minidlnad  
udp        0      0 0.0.0.0:10097           0.0.0.0:*                           26759/dhclient  
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           759/avahi-daemon: r
udp        0      0 0.0.0.0:39609           0.0.0.0:*                           759/avahi-daemon: r
udp        0      0 192.168.2.10:57168      0.0.0.0:*                           1160/minidlnad  
udp        0      0 127.0.1.1:53            0.0.0.0:*                           927/dnsmasq     
udp        0      0 0.0.0.0:68              0.0.0.0:*                           26759/dhclient  
udp        0      0 0.0.0.0:631             0.0.0.0:*                           863/cups-browsed
udp6       0      0 :::5353                 :::*                                759/avahi-daemon: r
udp6       0      0 :::13818                :::*                                26759/dhclient  
udp6       0      0 :::39404                :::*                                759/avahi-daemon: r

shows even system proses that is using the network and the name of them.

but not really a monitor as you half to keep running it to see changing output.

Solution 3:

Just a bit more comfort with netstat sudo watch -n1 netstat -tunap

It will refresh the data each 1s