Linux 如何安排tcpdump在特定时间段内运行?
每次手动运行Linux 如何安排tcpdump在特定时间段内运行?,linux,tcpdump,Linux,Tcpdump,每次手动运行tcpdump时,我都必须使用Ctrl+C来停止它。现在我想用cronjob安排我的tcpdump,我只需要它运行1个半小时。如果不手动运行Ctrl+C或kill命令,如何自动停止?下面是我正在测试的命令: tcpdump -i eth0 'port 8080' -w myfile 我可以安排另一个cronjob来终止tcpdump进程,但这似乎不是一个好主意 您可以组合-G{sec}(每x秒旋转一次转储文件)和-W{count}(限制转储文件)以获得所需内容: tcpdump
tcpdump
时,我都必须使用Ctrl+C来停止它。现在我想用cronjob安排我的tcpdump
,我只需要它运行1个半小时。如果不手动运行Ctrl+C或kill命令,如何自动停止?下面是我正在测试的命令:
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小时变为秒,它应该可以工作。您可以这样做:
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作业
- 此示例用于捕获星号电话服务器的数据包
- 您可以使用timeout
timeout 5400 tcpdump -i eth0 'port 8080' -w myfile
你可以用
watch tcpdump -i eth0 'port 8080' -w myfile
这将每2秒运行一次。tcpdump的任一答案;适用于任何程序(除非他们摆弄SIGALRM)的解决方案是注意:如果您没有收到任何流量,此技巧不起作用。是的,tcpdump在收到数据包之前不会旋转、关闭或以其他方式执行任何操作。用法:
-w myfile-%Y-%m-%d\u%H.%m.%S
。使用-w myfile
,tcpdump将在指定的秒数后继续覆盖同一文件。您必须提供一个文件名,其时间格式由strftime
指定,以避免覆盖。如果您只有一个tcpdump实例,您可以使用pkill tcpdump
这看起来更简单、更高效。timeout 90m
看起来更简单。这一个更安全,因为tcpdump-G
将在该接口没有流量争用的情况下无限期运行。这对我很有效!