tcpdump -G 用于按固定时间间隔自动轮转抓包文件,配合 -w 实现周期性、不中断的长期捕获;支持与 -C 联用实现时间或大小任一条件触发轮转,文件名可自动编号或结合 date 命令生成可读格式,但需注意版本兼容性及NTP同步。

tcpdump -G 用于按固定时间间隔自动轮转抓包文件,配合 -w 可实现周期性、不中断的长期捕获,避免单个文件过大或手动干预。
基本用法:指定轮转周期(秒)
使用 -G 后接秒数,表示每过多少秒就新建一个 pcap 文件。文件名由 -w 指定的基础名 + 时间戳组成(默认为 Unix 时间戳,单位秒):
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
sudo tcpdump -i ens33 -nn -s 0 -w capture-%s.pcap -G 300 'port 80'
→ 每 5 分钟(300 秒)生成一个新文件,如capture-1746042720.pcap
让文件名更易读:配合 -t 与 strftime 格式(需较新版本)
默认时间戳不易识别。若 tcpdump 版本 ≥ 4.9.3(多数 2022 年后系统满足),可结合 -t 和 shell 的 date 命令构造可读文件名:
-
sudo tcpdump -i ens33 -nn -s 0 -w "capture-$(date +\%Y\%m\%d_\%H\%M).pcap" -G 300 'port 443' &
→ 注意:此写法需在后台运行(&),且每次轮转会覆盖同名文件,不推荐直接使用 - 更稳妥方式是用 -G + -C 组合,或借助脚本封装(见下条)
安全轮转:-G 与 -C 联用防磁盘占满
-G 控制时间,-C 控制大小,两者可共存,确保任一条件满足即轮转:
-
sudo tcpdump -i ens33 -nn -s 0 -w dump- -G 600 -C 50 'tcp port 3306'
→ 每 10 分钟或文件达 50MB(以先到者为准)就生成新文件,如dump-00001.pcap、dump-00002.pcap - 文件名自动编号,无需手动管理,适合无人值守监控
注意事项与常见问题
- -G 必须与 -w 同时使用,否则报错 “-G requires -w”
- 轮转瞬间可能丢失极少量包(毫秒级),对高精度时序分析需留意
- 时间戳基于系统时钟,确保 NTP 同步,否则文件名时间错乱
- 旧版 tcpdump(如 CentOS 7 默认 4.5.x)不支持
%s或高级格式,建议升级 libpcap 和 tcpdump 至 4.9+ 版本

















