做为一个系统管理员,有时候须要搞清楚一台机器上的哪一个进程占用了较高的网络带宽。若是没有专用的工具,这并不是易事。在这篇文章中,咱们将要介绍这样的一款工具。在此以前呢,咱们会尽可能采用其它方法来获取某个进程占用多少带宽的相关信息。
我建议读者们也分享一些相似的命令行技巧或工具。
在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