2013-04-11 83 views
0
設置的cron

嘿,我得到了crontab中運行每5分鐘,它看起來像這樣5分30秒

*/5 *  *  *  *  blablalba 

我怎樣才能得到它運行每5分鐘30秒?

+6

不可能在crontab中指定秒。無論如何,你可以在劇本中使用'sleep'。 – fedorqui 2013-04-11 14:20:38

+0

你可能不能那樣做。爲什麼每5分鐘(或6分鐘)對你不好?也許在腳本中添加一些'sleep' ... – 2013-04-11 14:20:58

+1

crontab中的最小時間間隔是一分鐘。 – 2013-04-11 14:22:09

回答

2

而是使用cron的,有你的腳本重新開始使用這個作爲最終線本身:

echo /path/to/script | at now + 330 seconds 

或更「精確」的時機:考慮到accoutn多少秒你花運行該腳本並把這些出的330秒(5MN和30歲):

#beginning of script 
seconds_at_start=$(date +%s) 
.... 
#end of script 
seconds_at_end=$(date +%s) 
nb_seconds=$((330 + seconds_at_start - seconds_at_end)) 
echo /path/to/script | at now + $nb_seconds seconds 

注意:您可能希望使用bc用於計算部分,以避免運行到奇怪的行爲的情況下,你的shell的版本不能數值處理的算法與那些算法一樣高通過date +%s返回...

如果在版本不允許「現在+ XX秒」,那麼你可以:

compute the number of seconds the script ran for 
compute how many seconds to sleep ( sleep N) to reach the next minute 
and then : echo /path/to/script | at now + X minute 
+0

你真的嘗試過嗎?你正在使用哪個系統或at命令?因爲Ubuntu上至少'at'不需要幾秒鐘。 – mata 2013-04-12 13:48:32

+0

AIX上的「at」的手冊頁說它確實......對不起,如果它不是所有的(也許是「秒」而不是「秒」?) – 2013-04-12 14:09:30

+0

@mata:謝謝你指出這一點,我編輯添加一個方法來解決這個問題(即等待下一整分鐘,現在+ x分鐘) – 2013-04-12 14:14:32