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

时间:2014-09-08 19:25:17

标签: linux tcpdump

每当我手动运行tcpdump时,我必须使用 Ctrl + C 来停止它。现在我想用cronjob安排我的tcpdump,我只需要运行1个半小时。无需手动运行 Ctrl + C 或kill命令,如何自动停止?这是我正在测试的命令:

tcpdump -i eth0 'port 8080' -w  myfile

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

5 个答案:

答案 0 :(得分:43)

您可以组合-G {sec}(每x秒旋转一次转储文件)和-W {count}(限制转储文件数量)以获得您想要的内容:

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

将运行15秒然后停止。将1.5小时变成秒,它应该可以工作。

答案 1 :(得分:31)

你可以使用超时

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

答案 2 :(得分:14)

你可以这样做:

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

答案 3 :(得分:4)

在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电话服务器的数据包

答案 4 :(得分:-1)

您可以使用

watch tcpdump -i eth0 'port 8080' -w  myfile

这将每2秒运行一次。