我需要一個cron
跳過每個月的第一個星期六。我知道我們可以使用以下命令在特定日期運行,但是有沒有辦法在每個月的特定日期跳過?Schedule Cron跳過每個月的第一個星期六
//每個月
0 2 * * 1 [ date '+\%m' == date '+\%m' -d "1 week ago" ] || /path/to/command
我需要一個cron
跳過每個月的第一個星期六。我知道我們可以使用以下命令在特定日期運行,但是有沒有辦法在每個月的特定日期跳過?Schedule Cron跳過每個月的第一個星期六
//每個月
0 2 * * 1 [ date '+\%m' == date '+\%m' -d "1 week ago" ] || /path/to/command
由於似乎在cron別無選擇。 我正在用腳本來滿足上述需求。
**if [ $(date +%d) -le 7 ] && [ $(date +%u) -eq 1 ] ;**
[ $(date +%d) -le 7 ]
- 如果檢查的日子落在第7天一個月
[ $(date +%u) -eq 6 ]
- 檢查日期等於到週六
感謝。
對第一個星期一運行是您的命令二進制文件或只是腳本? 怎麼樣的想法加在一開始類似的東西:
[ $(date | awk '{print $1}') == "Sat" ] && exit 1 || { \
# your code here
...
}
在cron下工作(不要忘記躲避%):
0 2 * * * [[ `date '+\%u'` -ne '6' && `date '+\%d'` -lt '8' ]] || [[ `date '+\%d'` -gt '7' ]] && /path/to/command
的邏輯是:
另一種方式是反轉的邏輯:
0 2 * * * [[ ! (`date '+\%u'` -eq '6' && `date '+\%d'` -lt '8') ]] && /path/to/command
的邏輯是:
man 5 crontab
「第六」f ield(該行的其餘部分)指定要運行的命令。該行的整個命令部分,直到換行或 爲「%」字符,將由/ bin/sh或由cronfile的SHELL變量中指定的shell執行。除非以反斜槓(\)轉義,否則命令中的「%」字符將被更改爲換行符,並且第一個%後的所有數據將作爲標準輸入發送到該命令。
22 07 * * ['date'+%u'' -ne'2'&&'date'+%d''-lt 17] || ['date'+%d''-gt 17] &&/ /script.sh。 編輯上述命令以立即觸發腳本並進行測試。但它不起作用。我做錯了什麼? 如果我沒有錯,它必須運行腳本。 –
投擲下面的錯誤。 /bin/sh:-c:line 0:尋找匹配的''' –
時意外EOF你需要轉義%(因爲某些原因我需要double [[]]: '[['\'date' + \%u'\'-ne'2'&&''date'+ \%d'\'-lt 17]] || [[\'date'+ \%d'\'-gt 17]] && echo foo>〜/ foo.txt 2>〜/ foo.err' – kvantour