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の環境では動作しませんでした。何かインストールする必要があるのかもしれませんが、また調べて情報を追加したいと思います。
今回はここまでです。ちょっとしたテクニックですが、お役に立てれば幸いです。最後までお読みいただきありがとうございました。