监控进程的网络IO使用情况
1、vnstat
由于 vnstat 依赖于内核提供的信息,因此执行以下命令来验证内核是否提供了 vnStat 所期望的所有信息:
# vnstat --testkernel
This test will take about 60 seconds.
Everything is ok.
不带任何参数的 vnstat 将为您提供包含以下信息的快速摘要:
- 上次更新位于 /var/lib/vnstat/ 下的 vnstat 数据库时
- 从它开始收集特定接口的统计信息开始
- 过去两个月和过去两天的网络统计数据(传输的字节数、接收的字节数)。
# vnstat
Database updated: Sat Oct 15 11:54:00 2011
   eth0 since 10/01/11
          rx:  12.89 MiB      tx:  6.94 MiB      total:  19.82 MiB
   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Sep '11     12.90 MiB |    6.90 MiB |   19.81 MiB |    0.14 kbit/s
       Oct '11     12.89 MiB |    6.94 MiB |   19.82 MiB |    0.15 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        29 MiB |      14 MiB |      43 MiB |
	 daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     yesterday      4.30 MiB |    2.42 MiB |    6.72 MiB |    0.64 kbit/s
         today      2.03 MiB |    1.07 MiB |    3.10 MiB |    0.59 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated         4 MiB |       2 MiB |       6 MiB |
注意:如果刚刚安装了 vnStat,它将给出以下消息“eth0:还没有足够的数据可用。”。等待一段时间,然后再次尝试该命令。
显示实时网络统计:
使用vnstat -l显示实时网络统计信息,按 Ctrl-C 停止它后,vnstat 将显示实时监
$ vnstat -l
Monitoring eth0...    (press CTRL-C to stop)
   rx:        2 kbit/s     5 p/s          tx:        2 kbit/s     4 p/s
2、ftop
界面说明
=>代表发送数据,<= 代表接收数据
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
常用参数
-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的语法,可以使用各种过滤条件。
进入界面后的操作
一般参数
P      切换暂停/继续显示
h      在交互界面/状态输出界面之间切换
b      切换是否显示平均流量图形条
B      切换显示2s 10s和40s内的平均流量
T      切换是否显示每个连接的总流量
j/k    向上或向下滚动屏幕显示当前的连接信息
f      编辑筛选码
l      打开iftop输出过滤功能 ,如输入要显示的IP按回车键后屏幕就只显示与这个IP相关的流量信息
L      切换显示流量刻度范围,刻度不同,流量图形条也会不同
q      退出iftop
主机参数
n      使iftop输出结果以IP或主机名的方式显示
s      切换是否显示源主机信息
d      切换是否显示远端目标主机信息
t      切换输出模式,一行或多行
端口显示参数
N      切换显示端口号/端口号对应服务名称
S      切换是否显示本地源主机的端口信息
D      切换是否显示远端目标主机的端口信息
p      切换是否显示端口信息
输出排序参数
1/2/3  通过第一列/第二列/第三列排序
<      根据左边的本地主机名或IP地址进行排序
>      根据远端目标主机的主机名或IP地址进行排序
o      切换是否固定显示当前的连接
使用示例
1、显示网卡eth0的信息,主机通过ip显示
iftop -i eth0 -n
2、显示端口号(添加-P参数,进入界面可通过p参数关闭)
iftop -i eth0 -n -P
3、显示将输出以byte为单位显示网卡流量,默认是bit
iftop -i eth0 -n -B
4、显示流量进度条
iftop -i eth0 -n(进入界面后按下L)
5、显示每个连接的总流量
iftop -i eth0 -n(进入界面后按下T)
6、显示指定ip 172.17.1.158的流量
iftop -i eth0 -n(进入界面后按下l,输入172.17.1.158回车)
实战-找出最费流量的ip和端口号:
 
 
 
 
 
 
 
 
 
3、nethogs
语法
nethogs(选项)(参数)
选项
usage: nethogs [-V] [-h] [-b] [-d seconds] [-v mode] [-c count] [-t] [-p] [-s] [device [device [device ...]]]
  -V : 打印版本。
  -h : 打印此帮助。
  -b : bughunt模式 - 暗示tracemode。
  -d : 延迟更新刷新率(以秒为单位)。 默认值为1。
  -v : 视图模式(0 = KB / s,1 =总KB,2 =总B,3 =总MB)。 默认值为0。
  -c : 更新次数。 默认为0(无限制)。
  -t : tracemode.
  -p : 煽动混乱模式(不推荐)。
  -s : 按发送列排序输出。
  -a : 监控所有设备,甚至环回/停止。
  device : 要监控的设备。 默认是所有接口启动和运行,不包括环回
当nethogs运行时,按:
  q:退出
  s:按SENT流量排序
  r:按RECEIVE流量排序
  m:在总(KB,B,MB)和KB / s模式之间切换
其他参数和用法
-d : 刷新间隔
-h : 帮助
-p : promiscious 模式
-t : trace模式 
-V : 版本
NetHogs 命令行参数
用-d来添加刷新频率参数,device name 用来检测给定的某个或者某些设备的带宽(默认是eth0)。
例如:设置5秒钟的刷新频率,键入如下命令即可:
nethogs -d 5
如果只用来监视设备(eth0)的网络带宽可以使用如下命令:
nethogs eth0
如果要同时监视eth0和eth1接口,使用以下命令即可:
nethogs eth0 eth1
效果如图所示:











![[acwing周赛复盘] 第 94 场周赛20230311](https://img-blog.csdnimg.cn/4803447c73444805a85425e045de926f.png)







