私の問題では、数 n が与えられます。スクリプトを n 日に 1 回実行するには、cron 構成を作成する必要があります。
たとえば、n=20 の場合、スクリプトは 20 日に 1 回実行する必要があります。
何かアドバイス?
その構成は、不可能ではないにしても、非常に醜いものになります(実行される毎日を列挙する必要がある可能性があります..)
構成を作成する方がはるかに簡単なので、毎日実行されます。次に、スクリプト内 (またはラッパー スクリプト内) で、実際に実行する必要があることを確認します。
このチェックは
daycounter=$(( ($(date +%s) / (60*60*24) ) % 20))
ファイルベースのソリューションは、よりフォールト トレラントです。スケジュールの日にサーバーがダウンした場合は、翌日に実行されますが、計算は次のサイクル (20 日後) にスケジュールされます。
機能をファイルにラップすると、cron エントリは非常に見栄えがよくなります。
10 1 * * * executeeveryxday nameofthestatefile 20 "command to execute"
もちろん、より多くのサーバーとエントリがあり、これを中央の場所から管理したい場合は、おそらくデータベースからタスクを取得する方がよいでしょう..