首页/网络/网络排障速查/滚动抓包与长时间留存(-C / -G / -W)

滚动抓包与长时间留存(-C / -G / -W)

间歇故障需要持续抓取:用 -C 按大小、-G 按时间滚动生成文件并限制总量(-W),配合定时清理,避免磁盘被写满。

网络排障速查网络更新于 2026-10-13

滚动抓包解决什么

间歇性故障的关键难点是等它出现,这要求抓包能长时间运行而不把磁盘写满。滚动抓包的做法是让抓包程序按大小或按时间自动切分文件,并限制保留的文件数量,写满后覆盖最旧的一份,形成固定容量的环形缓冲。文件名里嵌入时间占位符后,事后可以根据故障发生时刻直接定位到对应的那个文件,不必在巨大的单一文件里翻找。

基本信息

适用场景间歇性故障、长时间观察、留档取证
按大小滚动每个文件到达指定兆字节数就换文件
按时间滚动每经过指定秒数换文件,文件名支持时间占位符
限制数量配合数量上限,超出后从头覆盖,防止写满磁盘
收尾工作配合定时清理策略与磁盘监控

典型使用场景

  • 偶发故障等待复现:长时间挂机抓包并限制占用空间
  • 变更窗口观测:按时间切分,便于与变更时刻对齐
  • 带宽受限环境:限制快照长度,降低单文件体积与写入压力
  • 合规留档:按天切分并保留固定天数
  • 跨时段分析:文件名带时间,便于按故障时间点直接取文件

滚动抓包

滚动抓包
# 每个文件 100MB,最多保留 20 个(共 2GB):
tcpdump -i eth0 -nn -s 128 -C 100 -W 20 -w /var/log/net/cap.pcap 'tcp port 443'
# 每 300 秒一个文件,文件名带时间:
tcpdump -i eth0 -nn -G 300 -w '/var/log/net/cap-%Y%m%d-%H%M%S.pcap' 'host 10.0.0.5'
# 定时清理(crontab):
find /var/log/net -name 'cap-*.pcap' -mtime +1 -delete
df -h /var/log | tail -1        # 抓包前先确认剩余空间

参数与效果

参数作用注意点
按大小滚动每文件到达上限就换文件与快照长度配合决定单文件时长
按时间滚动每经过指定秒数换文件文件名需带时间占位符才便于定位
数量上限限制文件总数,超出覆盖最旧不加此项长期运行必然写满磁盘
-s 快照长度限制每包抓取字节数太大显著增加占用
清理策略按时间删除历史文件与保留期限需求匹配
滚动抓包务必配合磁盘监控与数量限制:不限量抓包是生产环境常见的磁盘写满事故源。

易错点

  • 只按时间滚动不加数量上限:文件无限堆积,磁盘迟早被写满
  • 同时使用按大小与按时间滚动:两者语义不同,组合行为容易与预期不符
  • 文件名不带时间占位符:事后无法知道哪个文件覆盖了故障时刻
  • 抓包文件放在系统盘或日志盘:写入量大时既影响业务,又可能触发告警与清理

数据来源与参考

  • man 8 tcpdump(-C/-G/-W/-z 说明)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌