结束crontab作业的时间

我会在20:0023:00每5分钟运行snoop命令,但是我不知道怎么在最后5分钟( 22:5523:00 )杀死。 在这方面你能帮我吗?

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 

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

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

如果你真的需要SIGKILL timeout有一个--signal选项。

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

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

 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