马哥教育
本文介绍了一些可以用来监控网络使用情况的 Linux 命令行工具. 这些工具可以监控通过网络接口传输的数据, 并测量目前哪些数据所传输的速度. 入站流量和出站流量分开来显示.
一些命令可以显示单个进程所使用的带宽. 这样一来, 用户很容易发现过度使用网络带宽的某个进程.
这些工具使用不同的机制来制作流量报告. nload 等一些工具可以读取 "proc/net/dev" 文件, 以获得流量统计信息; 而一些工具使用 pcap 库来捕获所有数据包, 然后计算总数据量, 从而估计流量负载.
下面是按功能划分的命令名称.
监控总体带宽使用――nload,bmon,slurm,bwm-ng,cbm,speedometer 和 netload
监控总体带宽使用(批量式输出)――vnstat,ifstat,dstat 和 collectl
每个套接字连接的带宽使用――iftop,iptraf,tcptrack,pktstat,netwatch 和 trafshow
每个进程的带宽使用――nethogs
nload
nload 是一个命令行工具, 让用户可以分开来监控入站流量和出站流量. 它还可以绘制图表以显示入站流量和出站流量, 视图比例可以调整. 用起来很简单, 不支持许多选项.
所以, 如果你只需要快速查看总带宽使用情况, 无需每个进程的详细情况, 那么 nload 用起来很方便.
$ nload
安装 nload:Fedora 和 Ubuntu 在默认软件库里面就有 nload.CentOS 用户则需要从 Epel 软件库获得 nload.
fedora 或 CentOS
- $ yum install nload -y
- Ubuntu/debian
- $ sudo apt-get install nload
- iftop
iftop 可测量通过每一个套接字连接传输的数据; 它采用的工作方式有别于 nload.iftop 使用 pcap 库来捕获进出网络适配器的数据包, 然后汇总数据包大小和数量, 搞清楚总的带宽使用情况.
虽然 iftop 报告每个连接所使用的带宽, 但它无法报告参与某个套按字连接的进程名称 / 编号(ID). 不过由于基于 pcap 库, iftop 能够过滤流量, 并报告由过滤器指定的所选定主机连接的带宽使用情况.
$ sudo iftop -n
n 选项可以防止 iftop 将 IP 地址解析成主机名, 解析本身就会带来额外的网络流量.
安装 iftop:Ubuntu/Debian/Fedora 用户可以从默认软件库获得它. CentOS 用户可以从 Epel 获得它.
fedora 或 CentOS
yum install iftop -y
Ubuntu 或 debian
- $ sudo apt-get install iftop
- iptraf
iptraf 是一款交互式, 色彩鲜艳的 IP 局域网监控工具. 它可以显示每个连接以及主机之间传输的数据量. 下面是屏幕截图.
$ sudo iptraf
安装 iptraf:
- CentOS(基本软件库)
- $ yum install iptraf
fedora 或 CentOS(带 epel)
$ yum install iptraf-ng -y
Ubuntu 或 debian
- $ sudo apt-get install iptraf iptraf-ng
- nethogs
nethogs 是一款小巧的 "net top" 工具, 可以显示每个进程所使用的带宽, 并对列表排序, 将耗用带宽最多的进程排在最上面. 万一出现带宽使用突然激增的情况, 用户迅速打开 nethogs, 就可以找到导致带宽使用激增的进程. nethogs 可以报告程序的进程编号(PID), 用户和路径.
$ sudo nethogs
安装 nethogs:Ubuntu,Debian 和 Fedora 用户可以从默认软件库获得. CentOS 用户则需要 Epel.
Ubuntu 或 debian(默认软件库)
$ sudo apt-get install nethogs
- $ sudo yum install nethogs -y
- bmon
- $ sudo yum install slurm -y
- tcptrack
- Ubuntu, debian
- $ sudo apt-get install tcptrack
- fedora, CentOS(来自 repoforge 软件库)
- $ sudo yum install tcptrack
- vnstat
- $ service vnstat status
- vnStat daemon is running
- $ vnstat
- Database updated: Mon Mar 17 15:26:59 2014
- eth0 since 06/12/13
- rx: 135.14 GiB tx: 35.76 GiB total: 170.90 GiB
- monthly
- rx | tx | total | avg. rate
- ------------------------+-------------+-------------+-------------
- Feb '14 8.19 GiB | 2.08 GiB | 10.27 GiB | 35.60 kbit/s
- Mar '14 4.98 GiB | 1.52 GiB | 6.50 GiB | 37.93 kbit/s
- ------------------------+-------------+-------------+-------------
- estimated 9.28 GiB | 2.83 GiB | 12.11 GiB |
- daily
- rx | tx | total | avg. rate
- ------------------------+-------------+-------------+-------------
- yesterday 236.11 MiB | 98.61 MiB | 334.72 MiB | 31.74 kbit/s
- today 128.55 MiB | 41.00 MiB | 169.56 MiB | 24.97 kbit/s
- ------------------------+-------------+-------------+-------------
- estimated 199 MiB | 63 MiB | 262 MiB |
- $ vnstat -l -i eth0
- Monitoring eth0... (press CTRL-C to stop)
- rx: 12 kbit/s 10 p/s tx: 12 kbit/s 11 p/s
- $ sudo yum install vnstat
- bwm-ng
- $ bwm-ng
- bwm-ng v0.6 (probing every 0.500s), press 'h' for help
- input: /proc.NET/dev type: rate
- / iface Rx Tx T
- ot=================================================================
- == eth0: 0.53 KB/s 1.31 KB/s 1.84
- KB lo: 0.00 KB/s 0.00 KB/s 0.00
- KB-------------------------------------------------------------------------------------------------------------
- total: 0.53 KB/s 1.31 KB/s 1.84
- KB/s
- $ sudo apt-get install bwm-ng
- cbm:Color Bandwidth Meter
- $ sudo apt-get install cbm
- speedometer
- $ sudo apt-get install speedometer
- pktstat
- $ sudo pktstat -i eth0 -nt
- $ sudo apt-get install pktstat
- netwatch
- $ sudo netwatch -e eth0 -nt
- $ sudo apt-get install netdiag
- trafshow
- $ sudo trafshow -i eth0 tcp
- $ sudo apt-get install netdiag
- netload
- $ netload eth0
- $ sudo apt-get install netdiag
- ifstat
- $ ifstat -t -i eth0 0.5
- Time eth0
- HH:MM:SS KB/s in KB/s out
- 09:59:21 2.62 2.80
- 09:59:22 2.10 1.78
- 09:59:22 2.67 1.84
- 09:59:23 2.06 1.98
- 09:59:23 1.73 1.79
- Ubuntu, debian
- $ sudo apt-get install ifstat
- fedora, CentOS(Repoforge)
- $ sudo yum install ifstat
- 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
- collectl
- <----------Network---------->
- #Time KBIn PktIn KBOut PktOut
- 10:32:01 40 58 43 66
- 10:32:01 27 58 3 32
- 10:32:02 3 28 9 44
- 10:32:02 5 42 96 96
- 10:32:03 5 48 3 28
- $ sudo apt-get install collectl
- #Fedora
- $ sudo yum install collectl
来源: http://www.bubuko.com/infodetail-3040436.html