tcpdump -w 用于将捕获的数据包以标准PCAP格式写入文件,兼容Wireshark等工具;基本语法为 tcpdump -w output.pcap [filter],支持-c、-i、-C、-W等选项控制抓包数量、网卡、分卷大小与文件轮转。

Linux 中没有 tcpdump-w 这个命令,正确命令是 tcpdump -w,其中 -w 选项用于将捕获的数据包实时写入标准 PCAP 格式文件(即 Wireshark / tcpdump 兼容的二进制抓包文件)。
使用 -w 选项保存为标准 PCAP 文件
tcpdump -w 会将原始数据链路层帧按 PCAP 文件格式直接写入磁盘,不经过解析或格式转换,因此效率高、兼容性好,可被 Wireshark、tshark、capinfos 等工具直接打开。
- 基本语法:
tcpdump -w output.pcap [filter] - 例如:抓取前 100 个包并保存:
tcpdump -c 100 -w capture.pcap - 指定网卡(如 eth0):
tcpdump -i eth0 -w traffic.pcap - 带过滤条件(如只抓 HTTP):
tcpdump -i wlan0 'port 80' -w http.pcap
实时捕获 + 实时查看(可选)
若需边抓包边查看内容(如调试),可用 -w 配合 -l(行缓冲)和管道,或另起终端用 tcpdump -r 实时读取:
- 方法一(双终端):
终端1:tcpdump -i eth0 -w live.pcap
终端2(另开):tcpdump -r live.pcap -nn(注意:-r 是读取,非实时流式,文件需有内容才显示) - 方法二(实时解析输出,不推荐长期写盘):
tcpdump -i eth0 -l | tee dump.log,但此方式不生成 PCAP,仅文本。
注意事项与常见问题
PCAP 文件是二进制格式,不能用文本编辑器查看;写入过程依赖磁盘 I/O 性能,高速网络下可能丢包(可通过 -B 调整内核缓冲区,如 -B 4096)。
- 权限:普通用户可能无权抓包,加
sudo或配置 capabilities(如sudo setcap cap_net_raw+ep /usr/sbin/tcpdump) - 文件大小控制:用
-C(按 MB 分卷)和-W(最多保留 N 个文件),例如:tcpdump -w log.pcap -C 100 -W 5→ 每个文件 100MB,最多存 5 个(log.pcap、log.pcap1、…log.pcap4) - 时间戳精度:默认微秒级,如需纳秒级(需内核 & libpcap 支持),加
-J(较新版本 tcpdump)
验证生成的 PCAP 是否有效
用 file 或 capinfos 检查文件格式是否正确:
-
file capture.pcap→ 应显示类似 “tcpdump capture file (little-endian) - version 2.4” -
capinfos capture.pcap→ 显示包数量、时间范围、链路层类型等元信息 - 用 Wireshark 打开,确认能正常解析协议和显示时间戳











