Mac crontab 時間(hour)のオフセット

1日に3回動かしたいスクリプトがあります。
これ7,8年運用し続けてきたんですが、どうも芯を食った時間設定ではないような気が随分前からしていました。

時間をオフセットできないのかなーと思っていたんです。
日に3回動作するコマンドは、8時間に一度ということで、、、

0 */8 * * * 動かしたいスクリプトなど

となりますがこれだと0,8,16時に作動するわけです。
ぴったりに動くんじゃ拾えないデータなんかがあったりするんですよね。
だって、自動の場合は日を跨いだ時に集計が走るということはよくあるわけです。
それを拾うには、集計後に拾わなきゃいけないのです。
つまり、保険をとって1、2時間遅らせたいんですが、たとえば関数的に

0 */8+1 * * * 動かしたいスクリプトなど

としても変わらず、0時から8時間おきに走ります。
そこで以下のように分の方をオフセットしてみたりもしましたが

60 */8 * * * 動かしたいスクリプトなど

不正なコマンドだといわれます。

また、流れとは一旦少しはずれますがcrontabの設定に関して
web検索すると頻繁に出てくる”分単位”の定期実行をするという
コマンドがあるのは分かっていましたがそれはこーゆー感じです

5-56 */10 * * * * 動かしたいスクリプトなど

5分から56分までの間に10分置きに実行するという内容です
これはレンジをセットするというだけでオフセットというふうには考えてなかったのですよね。
分単位の定期実行ということで、単に分だからこそのコマンドとして用意されているんだなという感じでした。
今となっては安易でただ使うだけのユーザーという目線がすぎると反省しますが、、、

しかし、ここ最近実行タイミングに対して不満とストレスが日増しに積もり再度調べてみることにしました。
結局は出てくる内容に変わりありませんでした。。。が
ふと気づきました。

  1. これって分限定ってわけじゃないんじゃね?
  2. レンジをセットするってことはスタートだけセットすりゃオフセットができるってことじゃね?

ということです。
知っている方なら当たり前のテクニックなのでしょうが
ちっとも気づきませんでした。さらに、おっかけ調べても見つけられませんでしたが
難しいとか、複雑であるというたぐいのコマンドではないので試してみることにしました。
それは以下のようなものです。

0 2-*/8 * * * 動かしたいスクリプトなど

2時から8時間置きに指定のスクリプトが実行されます。

ばっちりです。欲しい情報を欲しいタイミングで定期的に手に入れることができました。
webに配置された情報の一部としてどなたかの一助にでもなれば良いかなと思っています。



コメントを書く