cronで特定の時間からn分おきに処理を実行したい場合(*/n+offset)

カテゴリ: Linux

Linuxのcron機能で、5分ごとにスクリプトを実行したい場合は、大抵の環境で下記の指定が可能です。

*/5 * * * *

ただ、上記の場合だと、開始が0分になります。
開始が0分からではなく、m分のオフセットを掛けたのち、n分おきに実行したい場合(*/n+m)の方法を説明します。

例として、1,6,11,16,...分に実行させる場合の指定方法を説明します。

cronでm分オフセット後、一定周期に処理を実行する

どの環境でも設定できる方法は、以下のように列挙するのが確実です。

1,6,11,16,21,26,31,36,41,46,51,56 * * * *

Linuxディストリビューションによっては、下記の定義が認められている場合があります。
これは、何のcronプログラムがインストールされているかに依存します。

1-59/5 * * * *

また、下記のパターンがOkな場合もあります。

*/5+1 * * * *

上記のどのパターンでもNGな場合

どうしてもcronの設定でn分のオフセットを掛けられない場合は、実行された側のスクリプトで対応するのも選択肢の一つです。
(crontabの定義と、実際の振る舞いが異なり、分かりづらいのでお勧めはしませんが...)

具体的には、下記のパターンが考えられます。

  • 実行されるスクリプト側でsleep 60する。
  • 毎分実行して、実行されたスクリプトで現在時刻をチェックする。
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。