Cron
每日 cron 作業在幾個月內處於活躍或不活躍狀態
我正在嘗試安排一項 cron 作業,但我失敗了。我什至開始認為這不能用 cron 來完成。
我正在嘗試設置一個每天在特定時間執行六個月的工作。然後它應該停止兩個月並再次開始執行六個月,然後它將停止兩個月,然後再執行六個月,以此類推。
簡而言之,我希望它每天執行六個月,停止兩個月,然後在無休止的 6 個月開啟/2 個月關閉循環中重新開始執行六個月。如果一年有 14 個月,我可以想辦法做到這一點,但遺憾的是它只有 12 個月。
甚至可以用 cron 做到這一點嗎?
TIA
無法使用 cron 完全表達您的條件,但是可以通過添加由 shell 評估的條件來補充 cron。這裡的想法是告訴 cron 每天在適當的時間執行你的工作,然後在開始工作之前,使用 shell 檢查月份。
例如,假設您的月份週期從當月的第一天開始,這是檢查週期的一種方法(從 2020 年 9 月開始):
[[ $((($(date "+%Y*12+10#%m")-(2020*12+9)) % 8)) -lt 6 ]] && ...
這要求
date
將目前日期格式化為<year>*12+10#<month>
(10#
強制將月份作為以 10 為底的值),然後將其用作算術表達式來計算自開始月份以來經過的月數,併計算除法的餘數乘以 8。因此在開始月份,結果為 0;下個月,1;六個月後,6 個月後,週期重新開始。因此,將結果與 6 進行比較確定腳本是否應該執行……假設您的 cron 中使用的 shell 支持此類算術運算,您可以直接將其包含在 cron 選項卡中;否則,請將其包含在腳本的開頭。