2012-07-16 53 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