2012-07-16 114 views
3

我要在20:0023:00期间每5分钟运行一次snoop命令,但是我不知道如何在最后5分钟(22:5523:00)杀死。在这方面,你能帮助我吗?crontab作业的结束时间

snoop命令:

FILE=vitrin_`date +%Y%m%d%H%M`.cap 
kill -9 `pgrep snoop` 
snoop -x0 -d e1000g0 -o /export/home/vitrin/$FILE 

的crontab:

0,5,10,15,20,25,30,35,40,45,50,55 20,21,22 * * * /export/home/snoop.sh 

回答

1

像这样的东西可能会有所帮助:

kill -9 $(pgrep snoop) && \ 
    test $(date '+%s') -lt $(date -d "23:00" '+%s') && \ 
    snoop -x0 -d e1000g0 -o /export/home/vitrin/$FILE 

或像这样在crontab:

*/5 20-23 * * * /export/home/snoop.sh 
3

而不是在下一个cron运行中杀死你的snoop(可能还有其他不相关的),你可以在一个工具如timeout from coreutils的监督下从头开始运行它。至少在linux下你几乎可以肯定已经拥有它,除非你的coreutils很老。

timeout 5m snoop ... 
status=$? 
[ $status -eq 124 ] && exit 0 
exit $status 

如果你真的需要SIGKILLtimeout--signal选项。

如果运行命令被超时终止,退出状态设置为124.在你的情况下,你似乎想忽略它,例如。就像上面的例子一样。

+0

我只是把杀死,以保持日志文件的平均大小。 – Hamid 2012-07-16 10:06:35