插件窝 干货文章 linux的netstat如何统计网络流量

linux的netstat如何统计网络流量

netstat 统计 流量 数据 771    来源:    2025-05-15

在Linux中,netstat 是一个经典的网络工具,用于显示网络连接、路由表、接口统计等信息。虽然 netstat 本身不直接提供流量统计功能,但可以通过结合其他工具或选项来间接实现流量统计。以下是几种常见的方法:


1. 使用 netstat -i 查看接口流量统计

netstat -i
  • 输出示例Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 1234567 0 0 0 987654 0 0 0 BMRU lo 65536 789012 0 0 0 789012 0 0 0 LRU
  • 字段说明
    • RX-OK:接收的数据包总数。
    • TX-OK:发送的数据包总数。
    • RX-ERR/TX-ERR:错误数据包数。
    • 单位是数据包数量,而非字节数。

2. 结合 watch 动态监控流量

watch -n 1 "netstat -i"
  • 每1秒刷新一次接口统计信息,观察 RX-OK/TX-OK 的变化来计算流量速率(包/秒)。

3. 使用 netstat -s 查看协议级统计

netstat -s
  • 显示所有协议的汇总统计(如TCP、UDP、ICMP等),包括收发数据包和字节数。
  • 示例(TCP部分)Tcp: 1234567 active connections openings 987654 passive connection openings 123456 segments received 789012 segments sent out

4. 更专业的工具推荐

netstat 的流量统计功能有限,建议使用以下工具替代:

a. ip -s link(推荐)

ip -s link show eth0
  • 显示指定接口的详细统计(包括字节数 bytes 和数据包数 packets)。

b. ifconfig

ifconfig eth0
  • 输出中包含 RX bytesTX bytes(已接收/发送的总字节数)。

c. nload / iftop / bmon

  • 实时流量监控工具bash nload eth0 # 实时显示带宽使用情况(需安装) iftop -i eth0 # 按连接显示流量(需安装)

d. vnstat(长期流量统计)

vnstat -l      # 实时监控
vnstat -d      # 每日统计
  • 需要安装并配置为后台服务,适合长期流量记录。

5. 脚本化统计流量变化

通过记录两次 netstat -iifconfig 的输出差值计算流量:

# 第一次记录
RX1=$(netstat -i | grep eth0 | awk '{print $3}')
TX1=$(netstat -i | grep eth0 | awk '{print $7}')
sleep 10
# 第二次记录
RX2=$(netstat -i | grep eth0 | awk '{print $3}')
TX2=$(netstat -i | grep eth0 | awk '{print $7}')
# 计算10秒内的流量(包数)
echo "RX packets: $((RX2 - RX1)), TX packets: $((TX2 - TX1))"

总结

  • 简单统计:用 netstat -iifconfig 查看接口的总数据包/字节数。
  • 实时监控:使用 nloadiftopip -s link
  • 长期记录:部署 vnstat

⚠️ 注意:netstat 已逐渐被 ssip 命令取代(如 ss -s 可查看套接字统计),建议在新系统中优先使用 iproute2 工具集。