PR

cronで隔週毎に動かすための設定方法

cronで毎週や特定の曜日に動作させることは簡単ですが、隔週毎に動作させる場合は少し工夫が必要です。ここでは具体的な設定例も含めて紹介します。

スポンサーリンク

隔週毎に動作させる為の設定例

まず結論から、以下のように設定します。

10 17 * * 6 test $(expr $(date '+\%W') \% 2 ) -eq 0 && /usr/bin/rsync -a --delete /Backup1 /Backup2/ ; logger "Backup Job Finish." > /dev/null 2>&1

いろいろ記載がありますが、隔週毎に動かすための設定は、

test $(expr $(date '+\%W') \% 2 ) -eq 0

になります。

まず最初の test コマンドは、条件を判定するコマンドです。

次の expr コマンドは、式を評価するコマンドです。

その次の date コマンドは、日付を出力するコマンドで、オプションの+%W (%の前のバックスラッシュはエスケープ文字)は、現在が今年の何週目かを表示します。

次の %2 は、2で割って余りがいくらになるかを計算しています。

最後の -eq 0 は、0に等しいかを判定しています。つまり2で割ってあまりが0になるのは、2週に1回なので偶数週だけこの式が正と判定され、その後の&&以降を実行することができる、となります。

セミコロンで区切っているのは、このコマンドがいつ終了したかをシスログに記録するために、付与してloggerコマンドを実行しています。

拡張cron

拡張cronというものがあり、細かい設定を日時の部分に追記することで利用できるとReHat公式サイトで情報が載っていましたが、AlmaLinuxの環境では動作しませんでした。何かインストールする必要があるのかもしれませんが、また調べて情報を追加したいと思います。

今回はここまでです。ちょっとしたテクニックですが、お役に立てれば幸いです。最後までお読みいただきありがとうございました。