一个计算机技术爱好者与学习者

0%

iftop命令

1. 哪个程序占用了带宽?

查看一台主机的监控,有时候我们会发现网络带宽被打满了,这时候怎样定位出是哪个程序大量占用了带宽?
答:使用网络数据包分析工具。比如iftop,可以监控到进出网卡的带宽用量。

参考文档:

2. 安装iftop

1
yum install iftop

3. 使用iftop

显示当前主机的流量和端口。

1
iftop -P

这里比较坑的是,有的统计项并不会显示端口。原因未知,解决方法未知。。。

按下n,将输出的主机信息都通过IP显示,不进行DNS解析,因为解析可能不准确而产生误导。

4. 输出内容说明


iftop的输出从上到下可以分为三部分:流量刻度,详细信息和统计信息。

4.1. 流量刻度

是iftop输出中最上面的一行。
此行信息是流量刻度,用于显示网卡带宽流量。

4.2. 详细信息

是iftop输出中最大的一个部分,此部分又分为左、中、右三列。

  • 左边显示本机的主机名/IP和端口
  • 中间显示正在和本机通信的主机名/IP和端口,=>代表发送数据,反之<=是接受数据。
  • 右边表示2s内,10s内,40s内的一个平均流量值,显示不同时间段的流量值。

4.3. 统计信息

位于iftop输出的最下面。
TX表示发送流量,RX表示接收流量,TOTAL表示发送和接收的全部流量。

  • cum:从运行iftop到当前时刻,发送和接收的总流量。
  • peak:流量的峰值。
  • rate:在过去2s,10s,40s,平均的流量的值。

5. iftop常用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-i 指定需要检测的网卡, 如果有多个网络接口,则需要注意网络接口的选择,如:# iftop -i eth1
-B 将输出以byte为单位显示网卡流量,默认是bit
-n 将输出的主机信息都通过IP显示,不进行DNS解析
-N 只显示连接端口号,不显示端口对应的服务名称
-F 显示特定网段的网卡进出流量 如iftop -F 192.168.85.0/24
-h 帮助,显示参数信息
-p 以混杂模式运行iftop,此时iftop可以用作网络嗅探器 ;
-P 显示主机以及端口信息
-m 设置输出界面中最上面的流量刻度最大值,流量刻度分5个大段显示 如:# iftop -m 100M
-f 使用筛选码选择数据包来计数 如iftop -f filter code
-b 不显示流量图形条
-c 指定可选的配置文件 如iftop -c config file
-t 使用不带ncurses的文本界面,
以下两个是只和-t一起用的:
-s num num秒后打印一次文本输出然后退出,-t -s 60组合使用,表示取60秒网络流量输出到终端
-L num 打印的行数
-f 参数支持tcpdump的语法,可以使用各种过滤条件。

6. 找到最费流量的IP和端口

1、进入iftop界面

1
iftop -i eth0 -nNB -m 10M
  • -i 指定网卡,
  • -n 代表主机通过ip显示不走DNS
  • -N 只显示连接端口号,不显示端口对应的服务名称(不加会显示如ssh这样的服务名称,不便于排查)
  • -B 指定显示单位为Kb,默认是bit,太小!
  • -m 设置输出界面中最上面的流量刻度最大值,流量刻度分5个大段显示

2、系列操作

  • 按下L显示流量刻度
  • 按下T显示总量
  • 按下3,根据最近40s统计排序
  • 按下t,发送和接受合成一行
  • 多按几次B,查看最近2s、10s、40s的统计,找到的流量用得最多的IP
  • 按下l,输入指定IP,回车
  • 按下p,根据端口号显示

7. 根据端口号查找进程

参考文档《shell命令之系统管理》

8. 后记

使用iftop命令查找占用带宽最多的程序,还是比较麻烦的,后来发现了一个更好用的工具 nethogs。

nethogs安装使用方法:

1
2
yum install nethogs
nethogs
  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-iftop/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~