2012-11-27 124 views
0

我希望爲我設置三個腳本的cron時間表提供一些幫助。我需要安排第一個腳本在每個月的第一個星期二運行,第二個腳本運行在每個月的第二個星期二,第三個腳本運行在每個月的第三個星期二。這是迄今爲止我所擁有的。安排一個cron作業在每個月的第一,第二和第三個星期二運行

# Run first script on the 1st Tuesday of every month at 9:00 AM 
0 9 1,2,3,4,5,6,7 * 2 wget -q -O /dev/null http://site.com/first-script 

# Run second script on the 2nd Tuesday of every month at 9:00 AM 
0 9 8,9,10,11,12,13,14 * 2 wget -q -O /dev/null http://site.com/second-script 

# Run third script on the 3rd Tuesday of every month at 7:00 AM 
0 7 15,16,17,18,19,20,21 * 2 wget -q -O /dev/null http://site.com/third-script 

我相信這些腳本將在第一,第二,和每月的第三個星期二和每月的1-21日運行。從我讀過的一週中的日子看來,日子是一個AND,這是真的嗎?

希望這是可能的w/cron,否則我將不得不將決定運行腳本或不在腳本本身。

回答

0

另一種方法是創建主腳本以在每個星期二運行,驗證星期二是和那個小時相應地調用相應的輔助腳本。

0 7,9 * * 2 wget -q -O /dev/null http://site.com/main-script 

我希望有幫助。

問候。

+0

很酷,謝謝。我想我會轉移邏輯來確定每個星期二的PHP主要腳本,並簡單地安排一個cron按照您的建議在每個星期二運行。謝謝! – scottystang

1

他們是OR。

它將運行每個星期二在上述日期。

2

您可以設置爲cron的:

00 09 1-7,8-14,15-21 * 2 /路徑/的MyScript

這將運行腳本上午9時1日,2日和第三個星期二。

0

如果您不想將日期檢查邏輯直接放入您的腳本中,可以使用cron作業shell命令部分在執行腳本之前使用條件檢查星期幾。

# Run first script on the 1st Tuesday of every month at 9:00 AM 
0 9 1-7 * * [ "$(date '+\%a')" = "Tue" ] && wget -q -O /dev/null http://example.com/first-script 

# Run second script on the 2nd Tuesday of every month at 9:00 AM 
0 9 8-14 * * [ "$(date '+\%a')" = "Tue" ] && wget -q -O /dev/null http://example.com/second-script 

# Run third script on the 3rd Tuesday of every month at 7:00 AM 
0 7 15-21 * * [ "$(date '+\%a')" = "Tue" ] && wget -q -O /dev/null http://example.com/third-script 

如果[$(日期 '+ \%A')」 = 「星期二」]條件成功,將執行該腳本。%符號必須用反斜線因爲cron的對待%作爲一個特殊字符。

因爲有7天,每週,每月的第一個星期二是保證在1-7範圍內,第二次在8-14範圍內,第三在15- 21範圍

要捕獲第一個星期二,你不能做到:

0 9 1-7 * 2 && wget -q -O /dev/null http://example.com/some-script 

...因爲1-7(月日)和(星期)實際上是或運算。出於某種原因,克朗對這兩個領域的看法與其他領域不同。在上面的例子中,你的腳本最終每天都會在每個星期二1-7範圍內運行,

相關問題