次のように、「DayofMonth」フィールドを使用して1日おきにコマンドを実行するようにcronを構成する場合:
1 22 */2 * * COMMAND
月の日が奇数になるたびに実行されます:1、3、5、7、9など。
2、6、8、10などのような月の日に実行するようにcronを構成するにはどうすればよいですか(文字通り指定せずに、月ごとに日数が異なるため問題があります)。
承認された回答:
試した構文は実際にはあいまいです。 1か月の日数によっては、奇数日に実行される月と偶数日に実行される月があります。これは、計算方法が可能性の総数を取り、それらを分割するためです。日範囲を手動で指定し、奇数日または偶数日を使用することで、この戦略的な動作をオーバーライドできます。偶数日のスクリプトは長い月の31日には実行されないため、偶数日のベースとして30日を使用しても何も失われません。また、31日があるかのように分割するように指定することで、奇数を強制できます。 -日の実行。
構文は次のようになります:
# Will only run on odd days:
0 0 1-31/2 * * command
# Will only run on even days:
0 0 2-30/2 * * command
同じ日数がない月についての懸念は、ここでは重要ではありません。これより多くの日がある月はないためです。2月が貧弱な場合、日付範囲は最後の1日か2日と一致しませんが、害はありません。リストされている。
このアプローチの唯一の「落とし穴」は、奇数日のサイクルを使用している場合、31日の月が続くと、コマンドはその月の最初にも実行されるということです。同様に、偶数サイクルを強制している場合、うるう年ごとに2月末に3日間のサイクルが1回発生します。 「隔日」の通常のパターンが毎月の偶数日または奇数日に常に当てはまるとは限らないという事実を実際に回避することはできません。これを強制すると、余分な実行が発生するか、実行が欠落します。日数が一致しない月。
関連:Linux –すべてのウィンドウを最小化するためのショートカット?