今回は、ちょっと特殊なクーロン設定を、まとめる形で紹介していきます。
実際の業務でクーロンの設定をおこなう際、“あれ?あの設定でどうやるんだっけ?”というときに役立つTIPS集としてまとめます。
何か思いだしたら都度追記していきます。
クーロン設定の基本
まずは設定の基本を紹介します。
クーロン設定は以下の書式になります。
分 時 日 月 曜日 ユーザ名 コマンド
分 |
0分から59分までを定義 |
時 |
0時から23時までを定義 |
日 |
1日から31日までを定義 |
月 |
1月から12月までを定義。英字略形も可(jan,feb…dec) |
曜日 |
0から7までを定義。0が日曜。英字略形も可(sun,mon…sat) |
各定義について、リスト定義と範囲体後のどちらも可能です。
リスト |
1,5,10 |
指定した値の場合のみ実行 |
範囲 |
1-5 |
指定した値の範囲内であれば実行 |
共存 |
1,5,10-15 |
リストと範囲の混在定義 |
間隔 |
1-5/2 |
「/」の後に間隔値を定義。左記の例だと「1,3,5」 |
月末に1回だけ動くクーロン設定
“月末に1回だけ動く”といったクーロン設定について紹介します。
結論を先に言いますと、以下の設定でOKです。
59 23 28-31 * * root /usr/bin/test `date -d tomorrow +\%d` -eq 1 && sh /home/root/sample.sh
これで、”月末に1回だけ動く”というクーロン設定になります。
各設定の詳細について説明してきます。
前半部分が「月末」の定義です。
59 23 28-31 の部分ですね。
毎月、28日、29日、30日、31日の、23時59分にクーロンを動かせる設定になります。
でもこのままだと、月末に1回だけではなく、最大4回動いてしまいます。
なので、次の日が”1日”だったらという条件を追加します。
つまり、3月だと3月31日の次の日が1日(4月1日)だったら月末、
9月だと9月30日の次の日が1日(10月1日)だったら月末、という事ですね。
その計算が、/usr/bin/test `date -d tomorrow +\%d` -eq 1 && です。
testコマンドで条件を記述しています。
「date -d tomorrow +\%d」の返り値が1だったら月末と判定します。
この条件を28日から31日に動かすことによって、月末1回動作します。
標準出力をさせない設定
クーロンで実行したプログラムの実行結果が標準出力されることを防ぐためには、クーロン設定の末尾に標準出力を無しにする記述をおこないます。
55 23 28-31 * * root /usr/bin/test `date -d tomorrow +\%d` -eq 1 && sh /home/root/sample.sh > /dev/null 2>&1
標準出力をなし(NULL)にします。
これで、標準出力はおこなわれません。