做爲一個系統管理員,有時候須要搞清楚一臺機器上的哪一個進程佔用了較高的網絡帶寬。若是沒有專用的工具,這並不是易事。在這篇文章中,咱們將要介紹這樣的一款工具。在此以前呢,咱們會盡可能採用其它方法來獲取某個進程佔用多少帶寬的相關信息。
我建議讀者們也分享一些相似的命令行技巧或工具。
在Linux桌面上有許多的圖形用戶界面工具使用一些基於GUI的小程序來獲取這類信息,可是大多數都只給出了整個系統所消耗的總帶寬(沒有顯示單獨某個進程的狀況)。生產環境中的服務器不可能有基於GUI工具來獲取這些信息,所以咱們只會討論一些命令行工具或者技巧。
第一種方法是使用iptraf 或 iftop 來肯定發送流量最大的端口,而後從列表中找出哪一個進程運行在該端口之上。我屢次採用過這種方法,均達到了目的。
若是你剛據說 iftop 和 iptraf,我推薦你閱讀下面這篇文章,解釋了這兩種工具如何使用。linux
閱讀:Iptraf and Iftop command usage and examples小程序
首先使用根據你使用的發行版選擇YUM 或者apt-get 安裝好iptraf 或 iptop。而後使用iptraf 命令找出流量使用狀況和接口、端口信息。iptraf 會給出以下所示的輸出。結果給出了兩樣東西,源地址和網絡端口號。在第一次出現的welcome屏幕上按下Enter,就能夠看見具體的選項了。一旦你選擇了在全部接口之上的「IP traffic monitor」選項,你會看到以下的輸出結果。bash
IPTraf ┌ Statistics for eth0 ─────────────────────────────────────────────────────────┐ │ │ │ Total Total Incoming Incoming Outgoing Outgoing │ │ Packets Bytes Packets Bytes Packets Bytes │ │ Total: 1032 200746 353 22884 679 177862 │ │ IP: 1032 184348 353 15992 679 168356 │ │ TCP: 1032 184348 353 15992 679 168356 │ │ UDP: 0 0 0 0 0 0 │ │ ICMP: 0 0 0 0 0 0 │ │ Other IP: 0 0 0 0 0 0 │ │ Non-IP: 0 0 0 0 0 0 │ │ │ │ │ │ Total rates: 47.0 kbits/sec Broadcast packets: 0 │ │ 31.2 packets/sec Broadcast bytes: 0 │ │ │ │ Incoming rates: 5.6 kbits/sec │ │ 10.6 packets/sec │ │ IP checksum errors: 0 │ │ Outgoing rates: 41.4 kbits/sec │ │ 20.6 packets/sec │ └ Elapsed time: 0:00 ────────────────────────────────────────────────────────┘
iptop:服務器
12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb 192.168.26.61 => 192.168.2.41 1.47Kb 1.22Kb 1.31Kb <= 320b 266b 234b 192.168.26.61 => 68.128.128.61.cq.cq.cta.net.cn 0b 0b 29b <= 0b 0b 51b 192.168.26.255 => 192.168.26.111 0b 0b 0b <= 0b 0b 46b TX: cum: 9.52KB peak: 4.67Kb rates: 1.47Kb 1.22Kb 1.33Kb RX: 2.14KB 2.05Kb 320b 266b 331b TOTAL: 11.7KB 4.83Kb 1.78Kb 1.48Kb 1.66Kb
iptop -i eth0 iptop -n man iptop lsof -i:8080與ps -ef 和netstat -anlp想配合
jnettop 命令在你但願監測一個特定的source和destination之間的流量的時候頗有用。它給出了咱們須要找到的那個進程所使用的端口信息。網絡
不過還有專門爲此目的設計的更好的工具。這就是nethogs。它和根據網絡用途將進程排好序的top 命令很相似,很容易安裝和使用。
若是你是在ReadHat/Centos系統上運行,那麼你須要安裝EPEL yum repo來安裝nethogs。對Ubuntu用戶來講,只須要用apt-get搞定。工具
apt-get install jnettop yum install jnettop apt-get install nethogs yum install nethogs