網上有很多適用於Linux操作系統的開源網絡監視工具.比如說,你可以用命令iftop來檢查帶寬使用情況. netstat用來查看接口統計報告,還有top監控系統當前運行進程.但是如果你想要找一個能夠按進程實時統計網絡帶寬利用率,那麼NetHogs就是你所需要的唯一工具.
NetHogs – 網絡帶寬監控
什麼是NetHogs?
NetHogs 是一個開源的命令行工具(類似於Linux的top命令),用來按進程或程序實時統計網絡帶寬使用率.
來自NetHogs項目網站:
NetHogs是一個小型的’net top’工具,不像大多數工具那樣拖慢每個協議或者是每個子網的速度而是按照進程進行帶寬分組.NetHogs NetHogs不需要依賴載入某個特殊的內核模塊. 如果發生了網絡阻塞你可以啟動NetHogs立即看到哪個PID造成的這種狀況.這樣就很容易找出哪個程序跑飛了然後突然占用你的帶寬.
這篇文章為你講解了如何在Unix/Linux操作系統下如何安裝和使用NetHogs按進程監控網絡帶寬使用率。
在RHEL,CentOS和Fedora下安裝NetHogs:
要安裝NetHogs,你必須要啟用你所用Linux下的EPEL源.然後運行下面的yum命令下載安裝NetHogs包.
- # yum install nethogs
樣例輸出
- [root@tecmint~]# yum -y install nethogs
- Loaded plugins:fastest mirror,refresh-packagekit
- Loading mirror speeds from cached hostfile
- *base: mirrors.hns.net.in
- *epel: mirror.nus.edu.sg
- *extras: mirrors.hns.net.in
- *rpmfusion-free-updates: mirrors.ustc.edu.cn
- *rpmfusion-nonfree-updates: mirror.de.leaseweb.net
- *updates: mirrors.hns.net.in
- Setting up InstallProcess
- ResolvingDependencies
- -->Running transaction check
- --->Package nethogs.i6860:0.8.0-1.el6 will be installed
- -->FinishedDependencyResolution
- DependenciesResolved
- ===========================================================================================================
- PackageArchVersionRepositorySize
- ===========================================================================================================
- Installing:
- nethogs i686 0.8.0-1.el6 epel 28k
- TransactionSummary
- ===========================================================================================================
- Install1Package(s)
- Total download size:28k
- Installed size:50k
- DownloadingPackages:
- nethogs-0.8.0-1.el6.i686.rpm|28kB00:00
- Running rpm_check_debug
- RunningTransactionTest
- TransactionTestSucceeded
- RunningTransaction
- Installing:nethogs-0.8.0-1.el6.i6861/1
- Verifying:nethogs-0.8.0-1.el6.i6861/1
- Installed:
- nethogs.i6860:0.8.0-1.el6
- Complete!
在Ubuntu, Linux mint和Debian下安裝NetHogs:
鍵入apt-get命令安裝NetHogs包
- $ sudo apt-get install nethogs
樣例輸出
- tecmint@tecmint:~$ sudo apt-get install nethogs
- [sudo]password fortecmint:
- Readingpackage lists...Done
- Building dependency tree
- Reading state information...Done
- The following NEW packages will be installed:
- nethogs
- 0 upgraded,1 newly installed,0 to remove and318not upgraded.
- Need to get27.1kB of archives.
- Afterthis operation,100kB of additional disk space will be used.
- Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/universe nethogs i386 0.8.0-1 [27.1 kB]
- Fetched27.1kBin1s(19.8kB/s)
- Selecting previously unselected package nethogs.
- (Reading database...216058 files and directories currently installed.)
- Unpacking nethogs(from.../nethogs_0.8.0-1_i386.deb)...
- Processing triggers forman-db...
- Setting up nethogs(0.8.0-1)...
NetHogs用法
在基於RedHat系統下鍵入如下命令啟動NetHogs工具.
- # nethogs
要執行NetHogs你必須擁有root權限,即如圖所示用sudo命令
- $ sudo nethogs
樣例預覽:
CentOS 6.3 下的NetHogs預覽
Ubuntu 12.10 下的NetHogs預覽
正如上圖所示, send列和received列顯示的是按照每個進程的流量統計.總的收發數據帶寬在最下方,而且可以用交互命令控制排序,下面將要討論這些交互命令:
NetHogs 命令行參數
以下就是NetHogs命令行的參數,用’-d’來添加刷新頻率參數,`device name` 用來檢測給定的某個或者某些設備的帶寬(默認是eth0).例如:設置5秒鐘的刷新頻率,鍵入如下命令即可:
- # nethogs -d 5
或
- $ sudo nethogs -d 5
如果只用來監視設備(eth0)的網絡帶寬可以使用如下命令:
- # nethogs eth0
或
- $ sudo nethogs eth0
如果要同時監視eth0和eth1接口,使用以下命令即可:
- # nethogs eth0 eth1
或
- $ sudo nethogs eth0 eth1
其他參數和用法
- -d: delay for refresh rate.
- -h: display available commands usage.
- -p: sniff in promiscious mode (not recommended).
- -t: trace mode.
- -V: prints Version info.
NetHogs 交互控制
以下是NetHogs的一些很有用的交互控制(鍵盤快捷鍵)
- -m:Change the units displayed forthe bandwidth inunits like KB/sec->KB->B->MB.
- -r:Sortby magnitude of respectively traffic.
- -s:Sortby magnitude of sent traffic.
- -q:Hit quit tothe shell prompt.
想要NetHogs命令行工具的完整參數列表請參考NetHogs的手冊,使用方法是在終端裡輸入‘man nethogs‘ 或者 ‘sudo man nethogs‘,更多信息請參考NetHogs項目主頁.