【原创】如何选择“定时抓包”方案
需求:能抓取指定时间长度的包,比如抓取 10s 长度的包; 可选方案: 使用 tcpdump 命令的 -G 和 -W 参数; 自己通过脚本实现在指定时间到达后通过 kill 命令杀掉 tcpdump 抓包进程; 使用 tshark 命令的 -a duration:xx 参数; 基于 tcpdump 的 -G -W 参数实现定时的方案 因为 tcpdump 太有名了,所以一般人十有八九会先想到这个工具; 查阅 tcpdump 的 man 手册可以发现与定时功能相关的参数如下: -G rotate_seconds 如果设置了该参数, tcpdump 将会以 rotate_seconds 为周期对通过 -w 选项指定命名的 dump 文件进行轮转;保存文件命名通过 -w 选项指定,并且应该包含符合 strftime(3) 定义的时间戳格式;如果未指定时间格式,则每一个新产生的文件将会覆盖之前的文件; 如果和 -C 选项配合使用,文件命名将会采用 ' file<count> ' 格式; -W 和 -C 选项配合使用,可以将创建文件数目限制指定值,并且咋达到该数值后,从头开始进行文件覆盖;从行为上,类似于实现了一个 ' rotating ' buffer 的功能;另外,该选项会在为文件命名时使用足够多的前导 0 , 以便正确支持我们要求的最大数目,同时允许基于该数值进行正确排序; 和 -G