每次我手动运行tcpdump
时,都需要使用Ctrl+C来停止它。现在我想用cronjob安排我的tcpdump
,并且我只需要它运行1个半小时。没有手动运行Ctrl+C或kill命令,如何自动停止它?这是我正在测试的命令:
tcpdump -i eth0 'port 8080' -w myfile
我可以安排另一个cronjob来终止tcpdump
进程,但这似乎不是一个好主意。
每次我手动运行tcpdump
时,都需要使用Ctrl+C来停止它。现在我想用cronjob安排我的tcpdump
,并且我只需要它运行1个半小时。没有手动运行Ctrl+C或kill命令,如何自动停止它?这是我正在测试的命令:
tcpdump -i eth0 'port 8080' -w myfile
我可以安排另一个cronjob来终止tcpdump
进程,但这似乎不是一个好主意。
-G{秒数}
(每隔x秒轮流转储dump文件)和-W{数量}
(限制dump文件数量)来获得你想要的结果:tcpdump -G 15 -W 1 -w myfile -i eth0 'port 8080'
这个程序会运行15秒,然后停止。把1.5小时转换成秒就可以让它正常工作。
-w myfile-%Y-%m-%d_%H.%M.%S
。通过使用-w myfile
,tcpdump会在指定的时间间隔后不断地覆盖同一个文件。为了避免覆盖文件,你必须提供一个带有时间格式的文件名,这个时间格式可以通过strftime
来指定。 - rajneesh2k10你可以使用超时
timeout 5400 tcpdump -i eth0 'port 8080' -w myfile
tcpdump -G
将无限期运行。 - Max Doronin你可以这样做:
tcpdump -i eth0 'port 8080' -w myfile &
pid=$!
sleep 1.5h
kill $pid
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
注意事项
你可以使用
watch tcpdump -i eth0 'port 8080' -w myfile
这将每2秒运行一次。