每当我手动运行tcpdump
时,我必须使用 Ctrl + C 来停止它。现在我想用cronjob安排我的tcpdump
,我只需要运行1个半小时。无需手动运行 Ctrl + C 或kill命令,如何自动停止?这是我正在测试的命令:
tcpdump -i eth0 'port 8080' -w myfile
我可以安排另一个cronjob来杀死tcpdump
进程,但这似乎不是一个好主意。
答案 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
注释
答案 4 :(得分:-1)
您可以使用
watch tcpdump -i eth0 'port 8080' -w myfile
这将每2秒运行一次。