Cron

Cron 作業可能每 45 天執行一次?(約1個半月)

  • March 15, 2018

在閱讀了 crontab 文件後,我想不出一種方法來標註以下時間表:每 45 天執行一次腳本。

有誰知道優雅的解決方案?謝謝你。

因為 45 天的時間段不能很好地劃分為公曆的周、月或年,所以無法限制腳本執行的日期,並且仍然讓它在您想要的所有日子執行。

因此,您需要每天執行命令,並讓命令本身在每 45 天中的 44 天不做任何事情的情況下返回。

例如,如果您希望腳本在 03:17 執行,則命令可能如下所示:

17 3 * * * /usr/local/bin/your-script

在腳本中你可以這樣做:

#!/bin/bash
if [[ $[($(date +%s)/86400)%45] != 0 ]]
then
   return
fi

real things happen here

!= 0元件可以使用不同的編號,具體取決於您希望它第一次執行的日期。您可以選擇將額外的邏輯放在 crontab 中而不是腳本中,儘管我個人認為在腳本中執行它更具可讀性。

請注意,如果您的時區使用 DST,您可能需要調整上述內容,以避免在調整時鐘時將日程表偏移一天。確切的詳細資訊取決於您選擇執行腳本的時區和時間。

引用自:https://serverfault.com/questions/901897