Cronでバッチ処理のスケジュール登録をしようと思ったんですが、
隔週で金曜日の正午に実行させるという設定が結構面倒でした。
で、
代替策として、
隔週ではなく毎月第一・第三金曜日の正午にバッチ処理を実行するように設定することに。
Cronへは以下のように記述します。
=======================
# 第一金曜日の正午
0 12 1-7 * 5 root sample.sh
# 第三金曜日の正午
0 12 15-21 * 5 root sample.sh
=======================
簡単に設定を説明すると、
先頭から順に
「分 時 日 月 曜日 コマンド」
を表しています。
「*」は~毎という意味です。
また、
曜日は
1:月曜日
2:火曜日
3:水曜日
4:木曜日
5:金曜日
6:土曜日
7または0:日曜日
なので、
「0 12 1,2,3,4,5,6,7 * 5 root sample.sh」
であれば、
「0」は0分、
「12」は12時、
「1,2,3,4,5,6,7」は1~7日、
「*」は毎月、
「5」は金曜日
を表しており、
毎月1~7日の中で金曜日に該当する日付けの正午(12時0分)にバッチを実行しろということになるようです。
で、
該当の日にのみ実行されるかを検証してみることに。
あれ!?
今日第4金曜なのにバッチ処理が動いてる!?
原因を調査してみると、
不覚にも参考にしたサイトの内容が間違っていたようです。
「0 12 1-7 * 5 root sample.sh」
だと1~7日まで毎日動いてしまうようです。
あと、毎週金曜日にもやはり実行されてしまうようです。
いろいろ調べた結果、そもそもcronで上記のような指定は出来ないようで、
結局、
シェルの中で第何金曜日かを判定してやるしかないみたいですね!!
いい勉強になりました。
この機会にcronについてもう少し勉強してみます。
cronの設定方法などは、
http://kazmax.zpp.jp/linux/lin_cron.html
などで詳しく解説してくれているので、
そちらを参考にしてみてください。
この記事へのコメントはありません。