2011-08-10 64 views
1

基本上,我想在每個月的第五,五,第一天,第二天,第四天(如果可用)運行一項工作。換句話說,除了第三個星期五,所有的星期五。如何在cron中排除一週中的某一天,並且僅在某個星期排除

編輯:這是更面向Java,沒有訪問bash環境。

+0

你能描述一下你正在運行什麼類型的系統?如果您有權訪問cron,很可能您有權訪問shell,並且可以編寫sh腳本來執行此操作。 –

回答

0

您可以手動檢查它的腳本:

date "%u" 

給你一週中的一天(同在cron道瓊斯場)

要獲得每月的週數,你必須做一些時髦的事情。

date +"%V" 

給你一個月的一週,所以你不得不看

x=`date +"%V"` 
y=`date +"%V" -d $(date +"%Y%m01")` 
week_of_month=$((x-y)) 

WEEK_OF_MONTH從0開始,所以你會想檢查它是否是不是兩個。

因此,在你的cron,您可以運行該腳本每週五,並把檢查在腳本的頂部:

x=`date +"%V"` 
y=`date +"%V" -d $(date +"%Y%m01")` 
week_of_month=$((x-y)) 
if [ "$week_of_month" == "2" ]; then 
    echo "Will not run second friday of the month" 
    exit; 
fi 
相關問題