参考文章Linux服务器上监控网路带宽的18个常用命令linux带宽流量监控查看工具。

注:不想看具体命令的内容嵌入式linux驱动程序设计从入门到精通,直接跳到最顶部的总结,去选一个合适自己的命令去使用即可,早已总结了怎样选择命令。

阐述

这种工具使用不同的机制来制做流量报告。nload等一些工具可以读取”proc/net/dev”文件,以获得流量统计信息;

而一些工具使用pcap库来捕获所有数据包,之后估算总数据量,进而恐怕流量负载。

下边是按功能界定的命令名称。

一Linux服务器上监控网路带宽的18个常用命令和linux带宽流量监控查看工具1.nload

nload是一个命令行工具,让用户可以分开来监控入站流量和出站流量。它还可以勾画图表以显示入站流量和出站流量,视图比列可以调整。用上去很简单,不支持许多选项。

所以,假若你只须要快速查看总带宽使用情况,无需每位进程的详尽情况,这么nload用上去很便捷。

安装nload:Fedora和Ubuntu在默认软件库上面就有nload。CentOS用户则须要从Epel软件库获得nload。

# fedora或centos 
$ yum install nload -y 
# ubuntu/debian 
$ sudo apt-get install nload 

使用:

# 直接输入命令即可
$ nload 

疗效:

解释一下右图,左下角代表对应的网卡,比如这儿共有6个,按下enter可以切换网卡。

Incoming代表输入服务器的流量,Outgoing代表输出。以Incoming为例,Curr代表当前的总带宽流量的使用情况,Avg是一定时间段的平均带宽;Min则代表某时刻最小带宽值;Max代表某时刻最大带宽值;Ttl不须要理会,可能是一些统计而已,想晓得的可自行百度查看该参数。

所以,倘若看某台服务器的总体带宽使用,使用nload是挺好的选择,个人平常也常常使用,但是留心一些linux测试带宽命令,下边的#符合能够组成峰值形状。

2.iftop

iftop可检测通过每一个套接字联接传输的数据;它采用的工作方法有别于nload。iftop使用pcap库来捕获进出网路适配器的数据包,之后汇总数据包大小和数目,厘清楚总的带宽使用情况。

尽管iftop报告每位联接所使用的带宽,但它未能报告参与某个套按字联接的进程名称/编号(ID)。不过因为基于pcap库,iftop才能过滤流量,并报告由过滤器指定的所选取主机联接的带宽使用情况。

安装iftop:Ubuntu/Debian/Fedora用户可以从默认软件库获得它。CentOS用户可以从Epel获得它。

# fedora或centos 
$ yum install iftop -y 
# ubuntu或 debian 
$ sudo apt-get install iftop 

使用:

$ iftop -n 

n选项可以避免iftop将IP地址解析成主机名,解析本身都会带来额外的网路流量。

疗效:

界面里面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的这两个左右箭头,表示的是流量的方向,两侧是收发各自的ip。

TX:发送流量。

RX:接收流量。

TOTAL:总流量。

Cumm:运行iftop到目前时间的总流量。

peak:流量峰值。

rates:分别表示过去2s10s40s的平均流量。

看图方法,所以实际上我们只须要查看TOTAL那一行即可,但是主要看rates的描述。

3.iptraf

iptraf是一款交互式、色彩艳丽的IP局域网监控工具。它可以显示每位联接以及主机之间传输的数据量。

安装:

# Centos(基本软件库) 
$ yum install iptraf 
# fedora或centos(带epel) 
$ yum install iptraf-ng -y 
# ubuntu或debian 
$ sudo apt-get install iptraf iptraf-ng 

运行:

# 可能是这个 sudo iptraf,看服务器apt下来的版本,
$ sudo iptraf-ng

疗效:

首先选择Iptrafficmonitor监控,之后选择Allinterfaces所有网口,即可去到第3个图画面。

解释该图:

第一列是与本机进行TCP联接的ip和port的程序;第2列是双方的通讯包个数;第3列是开启iptraf后,双方通讯的字节数;第4列未知;第5列是网口名子。

而下边黄色的字体是动态的tcp联接信息,比如ip1toip2on网口。

实际上我也不怎样用这个命令,不太熟,具体可以自行单独百度这个命令的参数意思。

4.nethogs

nethogs是一款精巧的”nettop”工具,可以显示每位进程所使用的带宽,并对列表排序,将耗损带宽最多的进程排在最前面。万一出现带宽使用猛然剧增的情况,用户迅速打开nethogs,就可以找到造成带宽使用高涨的进程。nethogs可以报告程序的进程编号(PID)、用户和路径。

安装nethogs:Ubuntu、Debian和Fedora用户可以从默认软件库获得。CentOS用户则须要Epel。

# ubuntu或debian(默认软件库) 
$ sudo apt-get install nethogs 
# fedora或centos(来自epel) 
$ yum install nethogs -y 

运行:

$ sudo nethogs 

疗效:

PID列代表进程pid,USER代表所属用户,PROGRAM代表可执行程序执行的路径,DEV代表网卡,SENT代表发送速度,RECEIVED代表接收速度。

TOTAL代表总发送总接收,单位都是kb/s。

对于查看某个进程是否占用高带宽,nethogs是个不错的选择。

5.bmon

bmon(带宽监控器)是一款类似nload的工具,它可以显示系统上所有网路插口的流量负载。输出结果还富含图表和剖面,附有数据包层面的详尽信息。

安装bmon:Ubuntu、Debian和Fedora用户可以从默认软件库来安装。CentOS用户则须要安装repoforge,由于Epel上面没有bmon。

# ubuntu或debian 
$ sudo apt-get install bmon 
# fedora或centos(来自repoforge) 
$ sudo yum install bmon 

运行:

$ sudo bmon

疗效:

左上方按上下左右可以选择网卡,这儿选择的是eno1。之后还会在左边显示该网卡的信息,整个白色框都是,不过红框中的第一行是该网卡的总接收与发送,下边几行是class这种网卡内部的具体信息。

之后中间那两个图形是描述红框中第一行的RX与TX信息。

实际上我们使用nload就差不多了,bmon个人比较少用。

bmon支持许多选项,才能制做HTML格式的报告。欲知更多信息,请参阅参考指南页。

6.slurm

slurm是另一款网路负载监控器,可以显示设备的统计信息,能够显示ASCII图形。它支持三种不同类型的图形,使用c键、s键和l键即可激活每种图形。slurm功能简单,未能显示关于网路负载的任何更进一步的详尽信息。

安装slurm:

# debian或ubuntu 
$ sudo apt-get install slurm 
# fedora或centos 
$ sudo yum install slurm -y 

运行:

# sudo slurm -s -i 网卡 ,例如
$ sudo slurm -s -i ens9f0

疗效:

里面是图形,不过没太大作用,下边是具体的网卡信息,主要看CurrentRXSpeed即可,右图的带宽大约是9M/s左右。

更详尽的用法请自行百度。

7.tcptrack

tcptrack类似iftop,使用pcap库来捕获数据包,并估算各类统计信息,例如每位联接所使用的带宽。它还支持标准的pcap过滤器,这种过滤器可拿来监控特定的联接。

linux带宽测速脚本_linux带宽测试_linux测试带宽命令

安装tcptrack:Ubuntu、Debian和Fedora在默认软件库上面就有它。CentOS用户则须要从RepoForge获得它,由于Epel上面没有它。

# ubuntu, debian 
$ sudo apt-get install tcptrack 
# fedora, centos(来自repoforge软件库) 
$ sudo yum install tcptrack 

运行:

# -r 代表几秒刷新,-i代表网卡。
sudo tcptrack -r 2 -i ens9f0

疗效:

主要看TOTAL即可,可以看见,该网卡大约占用11M的带宽,和前面slurm的9M是差不多的,说明统计的数据没有问题。

8.vnstat

vnstat与另外大多数工具有点不一样。它实际上运行后台服务/守护进程,一直不停地记录所传输数据的大小。之外,它可以拿来制做显示网路使用历史情况的报告。

安装vnstat:

# ubuntu或debian 
$ sudo apt-get install vnstat 
# fedora或 centos(来自epel) 
$ sudo yum install vnstat 

运行:

1)无任何选项的形式运行vnstat:

# 安装后默认运行了守护进程的服务。可以使用下面查看服务状态:
$ service vnstat status
# 然后输入以下命令,即可查看到对应的网卡历史数据:
# 运行没有任何选项的vnstat,只会显示自守护进程运行以来所传输的数据总量。
$ vnstat 

疗效:

状态如下:

可以看见对应网卡最大的带宽限制,都是百兆网卡。

历史数据如下:

Notenoughdataavailableyet.代表该网卡,自守护进程运行以来所传输的数据总数不足以显示。

之后只有ens9f0网卡有数据,但是有两行,并且注意,9月21日那行,应当不是确切的数据,由于昨天是2021-9-10号,而不是21号,所以这行数据不理它。

而today代表是明天的开启守护进程的数据。诸如total代表今早开启守护进程后,总共的使用的带宽总量。estimated是一个预市值,代表今早一定时间段内可能使用到的流量,何必太在乎这个值。

2)带选项的vnstat。想实时监控带宽使用情况,请使用”-l”选项(实时模式)。之后,它会显示入站数据和出站数据所使用的总带宽量,但非精确地显示,没有关于主机联接或进程的任何内部详尽信息。

vnstat -l -i ens9f0

疗效:

可以听到,我目前接收数据占用的带宽还是挺大的,在46M/s,而发送则比较小,不到1M/s。

vnstat更像是一款制做历史报告的工具,显示每晚或过去一个月使用了多少带宽。它并不是严格意义上的实时监控网路的工具。

所以,想查看原先的带宽数据,可以先下载后,开启守护进程,这样它还会后台帮你记录每晚的带宽使用情况。假如想查看当前的带宽情况,建议使用nload更便捷。

vnstat支持许多选项,支持什么选项方面的详尽信息请参阅参考指南页。

9.bwm-ng

bwm-ng(下一代带宽监控器)是另一款极其简单的实时网路负载监控工具,可以报告摘要信息,显示进出系统上所有可用网路插口的不同数据的传输速率。

安装bwm-ng:在CentOS上,可以从Epel来安装bwm-ng。

# ubuntu或debian 
$ sudo apt-get install bwm-ng 
# fedora或centos(来自epel) 
$ sudo apt-get install bwm-ng 

运行:

$ bwm-ng 

疗效:

可以看见,数据和前面几个命令都是差不多的,说明是正确的。

倘若控制台足够大,bwm-ng能够使用curses2输出模式,为流量勾画条形图。

$ bwm-ng -o curses2 

疗效:

linux带宽测试_linux测试带宽命令_linux带宽测速脚本

按下左右方向键即可切换网卡。

10.cbm:ColorBandwidthMeter

这是一款精巧简单的带宽监控工具,可以显示通过诸网路插口的流量大小。没有进一步的选项,仅仅实时显示和更新流量的统计信息。

安装:

$ sudo apt-get install cbm 

运行:

cbm 

疗效:

这款和nload都是可以使用的,十分便捷,觉得比nload还便捷。

11.speedometer

这是另一款精巧而简单的工具,仅仅勾画外形漂亮的图形,显示通过某个插口传输的入站流量和出站流量。

安装speedometer:

# ubuntu或debian用户 
apt-get install speedometer 

centos中的安装:

speedometer须要urwid模块的支持,安装:

cd /usr/local/src
wget -q https://pypi.python.org/packages/source/u/urwid/urwid-1.3.1.tar.gz
tar -zxvvf urwid-1.3.1.tar.gz
cd urwid-1.3.1
python setup.py install
#这里需要python的版本大于2.6,可用python命令直接查看版本。
# 再下载speedometer
cd /usr/local/src/
wget -q http://excess.org/speedometer/speedometer-2.8.tar.gz
tar -zxvvf speedometer-2.8.tar.gz
cd speedometer-2.8
python setup.py install

监控流量linux,运行:

speedometer -tx eth0 -rx eth0
#其中eth0是网卡,请根据你实际情况来,可用ifconfig命令查看网卡名称

-c选项可以以垂直分割的方法显示不同的项目:

speedometer -tx eth0 -c -rx eth0

另外,Speedometer还可以检测某个文件的下载速度,例如你正在下载downlod.iso这个文件,这么只要:

speedometer download.iso

都会显示出文件下载的速度,不过这招有时也不是很灵,由于大多数文件下载工具,会缓存下载的数据,或则在临时文件中保存下载的数据,而Speedometer只能通过检测文件大小的变化算出速度。

假如你晓得下载文件的大小,可以在命令手指定大小,这样Speedometer都会帮你显示一个进度条,例如我晓得download.iso是80M:

speedometer download.iso $((80*1024*1024))

疗效如下:

由于Speedometer可以监控文件大小的变化,所以不仅网速之外,你还可以用他来检测其他的数据。

例如,你可以用下边的命令检测一下硬碟的写入速率:

dd bs=1000000 count=1000 if=/dev/zero of=big_nothing &
speedometer big_nothing

后面的dd命令在当前目录写入一个全零的1G大小的文件,之后在写入中,用Speedmeter检测速率:

Speedometer可以同时测量多个网路插口、文件,并在一起显示下来,只要你的屏幕够大~。

最终常用的一个命令:

speedometer -r eth0 -t eth0

疗效:

注:本命令我在测试的时侯报错了,所以没进一步处理。由于我本身也极少这个命令。

列举错误如下:

12.pktstat

pktstat可以实时显示所有活动联接,并显示什么数据通过这种活动联接传输的速率。它还可以显示联接类型,例如TCP联接或UDP联接;假如涉及HTTP联接,就会显示关于HTTP恳求的详尽信息。

安装:

$ sudo apt-get install pktstat 

运行:

$ sudo pktstat -i ens9f0 -nt

疗效:

可以看见bps这一列,主要的9.1M是哪一个联接的,假如想要查看那个联接比较占用带宽,这么pktstat是不错的选择。

13.netwatch

netwatch是netdiag工具库的一部份,它也可以显示本地主机与其他远程主机之间的联接,并显示什么数据在每位联接上所传输的速率。

安装:

$ sudo apt-get install netdiag 

运行:

$ sudo netwatch -e ens9f0 -nt 

疗效:

关于netwatch更详尽的用法与参数意思,请自行百度。由于这个命令看上去挺费人的,所以我本人也极少用,用前面几个也满足开发需求了。

14.trafshow

与netwatch和pktstat一样,trafshow也可以报告当前活动联接、它们使用的合同以及每条联接上的数据传输速率。它能使用pcap类型过滤器,对联接进行过滤。

安装:

# 实际上上面已经安装了,就不用再执行一次
$ sudo apt-get install netdiag 

运行:

$ sudo trafshow -i ens9f0 tcp 

疗效:

Total代表命令trafshow执行后,服务器所使用的带宽总数。

关于trafshow更详尽的用法与参数意思,请自行百度。

15.netload

netload命令只显示关于当前流量负载的一份简略报告,并显示自程序启动以来所传输的总字节量。没有更多的功能特点。它是netdiag的一部份。

安装:

# 同理,实际上上面已经安装了,就不用再执行一次
$ sudo apt-get install netdiag 

运行:

$ netload ens9f0

疗效:

关于netload更详尽的用法与参数意思,请自行百度。

16.ifstat

ifstat才能以批处理式模式显示网路带宽。输出采用的一种格式以便用户使用其他程序或实用工具来计入日志和剖析。

安装ifstat:

Ubuntu、Debian和Fedora用户在默认软件库上面就有它。CentOS用户则须要从Repoforge获得它,由于Epel上面没有它。

# ubuntu, debian 
$ sudo apt-get install ifstat 
# fedora, centos(Repoforge) 
$ sudo yum install ifstat 

运行:

ifstat

疗效:

见到ens9f0,带宽大约在1M/s,觉得和前面的有点区别?里面的基本都是7M/s左右,是不是ifstat的KB/s的单位是字节/s而不是bps/s,是后者的话,就解释得通了,1000字节KB/s*8就是bps/s即带宽的单位,即7M/s。

然而若果根据前面的命令输出,KB/s就是代表带宽的意思,所以说ifstat的统计确切性还是差了点。

后续自己可以百度一下ifstat的单位意思即可。

可以查看具体的网卡以及每秒刷新时间。

ifstat -t -i ens9f0 0.5

17.dstat

dstat是一款用途广泛的工具(用python语言编撰),它可以监控系统的不同统计信息,并使用批处理模式来报告,或则将相关数据计入到CSV或类似的文件。这个事例显示了怎样使用dstat来报告网路带宽。

安装dstat:

$ dstat -nt 
-net/total- ----system---- 
recv  send|     time 
0     0 |23-03 10:27:13 
1738B 1810B|23-03 10:27:14 
2937B 2610B|23-03 10:27:15 
2319B 2232B|23-03 10:27:16 
2738B 2508B|23-03 10:27:17

这儿我没安装成功,就先不处理这个命令,具体请自行百度。

18.collectl

collectl以一种类似dstat的格式报告系统的统计信息;与dstat一样,它也搜集关于系统不同资源(如处理器、内存和网路等)的统计信息。这儿给出的一个简单事例显示了怎样使用collectl来报告网路使用/带宽。

安装collectl:

# Ubuntu/Debian用户 
$ sudo apt-get install collectl 
#Fedora 
$ sudo yum install collectl 
上面会弹出一个选项,让你选web server,我们选第一个apached即可,没有安装这个软件会skip不处理,但是命令还是可以使用的。

关于collectl更详尽的用法与参数意思,请自行百度。

额外命令监控带宽信息1.sar

安装:

sudo apt-get install sysstat

运行:

# 1代表每1秒监控一次,总共4次。
sar -n DEV 1 4

疗效:

可以看见下边,收发带宽大约也是7M/s左右,和前面也是差不多的。

rxpck/stxpck/s代表:查看每秒接收/发送包的速率。

rxKB/stxKB/s代表:每秒接收的速率即接收分辨率(转成带宽除以8即可)以及每秒发送的速率即发送分辨率。

实际上sar更多是查看服务器的系统资源,比如CPU,c盘等,不仅仅是带宽。

关于sar命令的更多选项,请看这篇文章linux性能监控sar命令。

2.watchifconfig

实际上watch搭配ifconfig也可以大约的查看带宽数据,只不过须要自己统计。

这个命令的意思是:默认s执行一次ifconfig,这样就可以不断的查看到接收与发送的字节数。并且通常不会使用这个组合去看带宽,只是想告诉你们可以这样使用。

 watch ifconfig

大约看一下疗效即可。

里面的命令的单位KB/s,应当都是指带宽的意思。假如不是带宽的话而是字节每秒,则须要除以8。

二总结前面常用和观察直观的命令nload—>便捷查看一台服务器当前的带宽情况。nethogs—>对于查看某个进程是否占用高带宽,nethogs是个不错的选择。slurm—>便捷查看一台服务器当前的带宽情况。tcptrack—>便捷查看每一个顾客端与服务器的联接所占用的带宽,但是也便捷查看一台服务器当前的带宽情况。vnstat—>当开启该服务后,便捷查看历史的带宽数据,每三天就会记录着带宽使用总数,只不过这一点有时数据不太确切,之后可通过servicevnstatstatus取代ifconfig查看对应网卡的最大带宽限制,比较便捷。也可以实时查看一台服务器当前的带宽情况vnstat-l-iens9f0。bwm-ng—>便捷查看一台服务器当前的带宽情况,而且能同时看见所有网卡的带宽情况,对比nolad,优先选择bwm-ng。cbm—>便捷查看一台服务器当前的带宽情况,而且能同时看见所有网卡的带宽情况,对比nolad,优先选择cbm(由于nload须要按方向键切换网卡),cbm与bwm-ng差不多,选哪一个都可以,不过nload比较高大尚一点,这几个任选吧。pktstat—>便捷查看每一个顾客端与服务器的联接所占用的带宽,与tcptrack类似,觉得选那个都差距不大。三卸载里面的命令

若果不想要里面的命令了,可以使用下边形式进行卸载,注意linux测试带宽命令,里面我都是使用apt-get的环境去下载的,所以使用apt-get去卸载。

卸载命令是统一的,将前面install替换成remove即可。

比如:

sudo apt-get remove collectl

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复