毎日のクローン操作は数ヶ月間アクティブまたは非アクティブです。

毎日のクローン操作は数ヶ月間アクティブまたは非アクティブです。

cronジョブをスケジュールしようとしましたが、完全に失敗しました。私はcronではこれは不可能だと思い始めました。

6ヶ月間、毎日特定の時間に実行されるタスクを設定しようとしています。その後、2ヶ月間停止してから6ヶ月間再実行を開始し、その後2ヶ月間停止し、6ヶ月間再実行するように続行されます。

簡単に言うと、6ヶ月間毎日実行し、2ヶ月間停止してから、6ヶ月間再実行し、6ヶ月間無限ループで実行し、2ヶ月間中断したいと思います。 1年が14ヶ月であれば、この方法を見つけることができますが、残念ながら12ヶ月しかありません。

cronでこれを行うことは可能ですか?

ティア

ベストアンサー1

cronを使用して条件を完全に表現することはできませんが、シェルで評価される条件を追加してcronを補完することができます。ここでのアイデアは、毎日適切な時間にタスクを実行するようにcronに指示し、タスクを開始する前にシェルを使用して月を確認することです。

たとえば、月間サイクルが毎月1日に始まると仮定すると、サイクルを確認する1つの方法は次のとおりです(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で使用されているシェルがこれらの算術演算をサポートしていると仮定すると、cronタブに直接含めることができます。それ以外の場合は、スクリプトの先頭に含めます。

おすすめ記事