Cron

每日 cron 作業在幾個月內處於活躍或不活躍狀態

  • September 16, 2020

我正在嘗試安排一項 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 選項卡中;否則,請將其包含在腳本的開頭。

引用自:https://unix.stackexchange.com/questions/609684