如何安排tcpdump运行特定的时间段?

每次手动运行tcpdump ,我都要用Ctrl + C来停止它。 现在我想用cronjob来安排我的tcpdump ,我只需要运行1个半小时。 没有手动运行Ctrl + C或kill命令,它怎么能自动停止? 这是我正在testing的命令:

 tcpdump -i eth0 'port 8080' -w myfile 

我可以安排另一个cronjob杀死tcpdump进程,但这似乎不是一个好主意。

你可以结合-G {sec} (每隔x秒旋转转储文件)和-W {count} (限制转储文件的数量)来得到你想要的:

 tcpdump -G 15 -W 1 -w myfile -i eth0 'port 8080' 

会运行15秒,然后停止。 打开1.5小时到几秒钟,它应该工作。

你可以使用超时

 timeout 5400 tcpdump -i eth0 'port 8080' -w myfile 

你可以这样做:

 tcpdump -i eth0 'port 8080' -w myfile & pid=$! sleep 1.5h kill $pid 

这个方法在Ubuntu 14.04上最适合我

 sudo -i crontab -e 

然后添加该行

 30 17 * * * /usr/sbin/tcpdump -G 12600 -W 1 -s 3000 -w /home/ubuntu/capture-file.pcap port 5060 or portrange 10000-35000 

笔记

  • -G标志指示转储运行的秒数,本示例每天从下午5:30运行到晚上9:00
  • -W是tcpdump将执行的迭代次数
  • Cron作业将不会被添加,直到您保存并退出文件
  • 这个例子用于捕获Asterisk电话服务器的数据包