Linux服务器上监控网络带宽的18个常用命令本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。
这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度。
入站流量和出站流量分开来显示。
一些命令可以显示单个进程所使用的带宽。
这样一来,用户很容易发现过度使用网络带宽的某个进程。
这些工具使用不同的机制来制作流量报告。
nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息;而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载。
下面是按功能划分的命令名称。
∙监控总体带宽使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload ∙监控总体带宽使用(批量式输出)――vnstat、ifstat、dstat和collectl∙每个套接字连接的带宽使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow∙每个进程的带宽使用――nethogs1. nloadnload是一个命令行工具,让用户可以分开来监控入站流量和出站流量。
它还可以绘制图表以显示入站流量和出站流量,视图比例可以调整。
用起来很简单,不支持许多选项。
所以,如果你只需要快速查看总带宽使用情况,无需每个进程的详细情况,那么nload 用起来很方便。
1.$ nload安装nload:Fedora和Ubuntu在默认软件库里面就有nload。
CentOS用户则需要从Epel 软件库获得nload。
1.# fedora或centos2.$ yum install nload -y3.# ubuntu/debian4.$ sudo apt-get install nload2. iftopiftop可测量通过每一个套接字连接传输的数据;它采用的工作方式有别于nload。
iftop使用pcap库来捕获进出网络适配器的数据包,然后汇总数据包大小和数量,搞清楚总的带宽使用情况。
虽然iftop报告每个连接所使用的带宽,但它无法报告参与某个套按字连接的进程名称/编号(ID)。
不过由于基于pcap库,iftop能够过滤流量,并报告由过滤器指定的所选定主机连接的带宽使用情况。
1.$ sudo iftop -nn选项可以防止iftop将IP地址解析成主机名,解析本身就会带来额外的网络流量。
安装iftop:Ubuntu/Debian/Fedora用户可以从默认软件库获得它。
CentOS用户可以从Epel获得它。
1.# fedora或centos2.yum install iftop -y3.# ubuntu或 debian4.$ sudo apt-get install iftop3. iptrafiptraf是一款交互式、色彩鲜艳的IP局域网监控工具。
它可以显示每个连接以及主机之间传输的数据量。
下面是屏幕截图。
1.$ sudo iptraf安装iptraf:1.# Centos(基本软件库)2.$ yum install iptraf3.# fedora或centos(带epel)4.$ yum install iptraf-ng -y5.# ubuntu或debian6.$ sudo apt-get install iptraf iptraf-ng4. nethogsnethogs是一款小巧的"net top"工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。
万一出现带宽使用突然激增的情况,用户迅速打开nethogs,就可以找到导致带宽使用激增的进程。
nethogs可以报告程序的进程编号(PID)、用户和路径。
1.$ sudo nethogs安装nethogs:Ubuntu、Debian和Fedora用户可以从默认软件库获得。
CentOS用户则需要Epel。
1.# ubuntu或debian(默认软件库)2.$ sudo apt-get install nethogs3.# fedora或centos(来自epel)4.$ sudo yum install nethogs -y5. bmonbmon(带宽监控器)是一款类似nload的工具,它可以显示系统上所有网络接口的流量负载。
输出结果还含有图表和剖面,附有数据包层面的详细信息。
安装bmon:Ubuntu、Debian和Fedora用户可以从默认软件库来安装。
CentOS用户则需要安装repoforge,因为Epel里面没有bmon。
1.# ubuntu或debian2.$ sudo apt-get install bmon3.# fedora或centos(来自repoforge)4.$ sudo yum install bmonbmon支持许多选项,能够制作HTML格式的报告。
欲知更多信息,请参阅参考手册页。
6. slurmslurm是另一款网络负载监控器,可以显示设备的统计信息,还能显示ASCII图形。
它支持三种不同类型的图形,使用c键、s键和l键即可激活每种图形。
slurm功能简单,无法显示关于网络负载的任何更进一步的详细信息。
1.$ slurm -s -i eth0安装slurm1.# debian或ubuntu2.$ sudo apt-get install slurm3.# fedora或centos4.$ sudo yum install slurm -y7. tcptracktcptrack类似iftop,使用pcap库来捕获数据包,并计算各种统计信息,比如每个连接所使用的带宽。
它还支持标准的pcap过滤器,这些过滤器可用来监控特定的连接。
安装tcptrack:Ubuntu、Debian和Fedora在默认软件库里面就有它。
CentOS用户则需要从RepoForge获得它,因为Epel里面没有它。
1.# ubuntu, debian2.$ sudo apt-get install tcptrack3.# fedora, centos(来自repoforge软件库)4.$ sudo yum install tcptrack8. vnstatvnstat与另外大多数工具有点不一样。
它实际上运行后台服务/守护进程,始终不停地记录所传输数据的大小。
之外,它可以用来制作显示网络使用历史情况的报告。
1.$ service vnstat status2.* vnStat daemon is running运行没有任何选项的vnstat,只会显示自守护进程运行以来所传输的数据总量。
1.$ vnstat2.Database updated: Mon Mar 17 15:26:59 20143.eth0 since 06/12/134.rx: 135.14 GiB tx: 35.76 GiB total: 170.90 GiB5.monthly6.rx | tx | total | avg. rate7.8.------------------------+-------------+-------------+-------------9.Feb '14 8.19 GiB | 2.08 GiB | 10.27 GiB | 35.60 kbit/s10.Mar '14 4.98 GiB | 1.52 GiB | 6.50 GiB | 37.93 kbit/s11.------------------------+-------------+-------------+-------------12.estimated 9.28 GiB | 2.83 GiB | 12.11 GiB |13.daily14.rx | tx | total | avg. rate15.------------------------+-------------+-------------+-------------16.yesterday 236.11 MiB | 98.61 MiB | 334.72 MiB | 31.74 kbit/s17.today 128.55 MiB | 41.00 MiB | 169.56 MiB | 24.97 kbit/s18.------------------------+-------------+-------------+-------------19.estimated 199 MiB | 63 MiB | 262 MiB |想实时监控带宽使用情况,请使用"-l"选项(实时模式)。
然后,它会显示入站数据和出站数据所使用的总带宽量,但非常精确地显示,没有关于主机连接或进程的任何内部详细信息。
1.$ vnstat -l -i eth02.Monitoring eth0... (press CTRL-C to stop)3.rx: 12 kbit/s 10 p/s tx: 12 kbit/s 11 p/svnstat更像是一款制作历史报告的工具,显示每天或过去一个月使用了多少带宽。
它并不是严格意义上的实时监控网络的工具。
vnstat支持许多选项,支持哪些选项方面的详细信息请参阅参考手册页。
安装vnstat1.# ubuntu或debian2.$ sudo apt-get install vnstat3.# fedora或 centos(来自epel)4.$ sudo yum install vnstat9. bwm-ngbwm-ng(下一代带宽监控器)是另一款非常简单的实时网络负载监控工具,可以报告摘要信息,显示进出系统上所有可用网络接口的不同数据的传输速度。
1.$ bwm-ng2.bwm-ng v0.6 (probing every 0.500s), press 'h' for help3.input: /proc/net/dev type: rate4./ iface Rx TxT5.ot=================================================================6.== eth0: 0.53 KB/s 1.31 KB/s1.847.KB lo: 0.00 KB/s 0.00 KB/s0.008.KB-------------------------------------------------------------------------------------------------------------9.total: 0.53 KB/s 1.31 KB/s 1.8410.KB/s如果控制台足够大,bwm-ng还能使用curses2输出模式,为流量绘制条形图。