tcpdump -ennXXSs0 -i any -C 1 -Z root -W 2 -w /usr/admin/config/2.cap
- - C(大写)表示每当文件达到指定大小时进行重新保存一个新文件,单位是MB(1 000 000 B)
- - z (小写) 表示下面的新文件也是用root权限来执行的,如果用 - C 时必须配合-Z(大写Z,带root才不会报没权限错误)
- - w 直接将分组写入文件中
- - W 限制文件的个数,达到个数后开始从最早的文覆盖
这是我遇到的一个需求,暂时没有办法破解,一旦达到大小都会重写文件,先记录在此,有更好的方法再补充。
暂时有一种方式
因为我的tcpdump实现是fork一个子进程,用execvp去执行的
所以,可以在父进程中,检测所保存的文件,比如my.pcap,如果my.pcap文件大小达到20M并出现my.pcap1时,杀死此子进程
最后解决:
tcpdump -ennXXSs0 -i any -C 20 -W 2 -Z root -w /usr/admin/config/2.cap -z packet_capture.sh
先解释:前面的-ennXXSs0不用介绍,百度一下,随地可见;
1、-i(interface) 指定要抓取的接口,any就是抓 所有接口
2、-C(