2011-09-12 21 views
1

我不得不分裂一些較大的cron,而一個簡單的方法就是隻取得id的最後兩位數字。所以id 10001會同時運行1,101,201,... 1001,001等。如何在100分鐘的週期內使cron空間化?

而不是一個單一的克朗需要幾小時運行,他們現在分成100次,運行更一致。

但是,如何安排一個cron以每100分鐘運行一次,從x開始?

例如:

php cron.cli 00 start at 12:01am and run every 100 minutes 
php cron.cli 01 start at 12:01am 
php cron.cli 02 start at 12:02am 
    . . . 
php cron.cli 99 start at 1:39am 
php cron.cli 00 start at 1:40am [looping every 100 minutes] 
php cron.cli 01 start at 1:41am 

我需要的cron 01上午12:01開始,cron的02開始在12:02和cron 99在上午01點39分開始。然後每隔一百秒。

你能幫忙嗎?

+2

不知道你在做什麼,但你有沒有考慮一個守護進程代替。 – 2011-09-12 20:49:56

回答

5

我只會寫入一個條目到crontab文件中。一個命令將啓動cron.cli腳本並將當前時間作爲參數傳遞。

cron-cli腳本然後採用該參數並從中創建出有問題的標識。這樣做,該文件管理起來要簡單得多,因爲您不會用很多條目來混淆crontab文件。想象一下,你的100個步驟會變成200步甚至更多...。

* * * * * php cron.cli $(date +\%R) 
+0

我喜歡它。很簡單。謹慎提供一個關於如何將hh:mm轉換爲100個作業中的每一個的建議? – Ryan

+0

'(hh * 60 + mm)%100'應該給你一個從0-99開始的標識,以'00:00'處的'0'開始。 - 由於UNIX時代日內更好,因此可能會選擇分鐘數。 – hakre

2

假設他們不需要連續運行,一個簡單的解決方法是讓他們每120分鐘運行一次,因此您可以指定偶數小時作業00到59(我猜你從00開始,因爲你在99完成。)和奇數小時工作61到99.

如果你想要一個更均勻的分佈,你可以分散他們一點(跳過分鐘是6的倍數),這樣工作00到49填滿第一個小時,50到99填滿第二個小時。

2

幸運的是,如果你寫了這一點明確的,你只需要指定一年的價值的cron項,因爲:

enter image description here