x時台に動くcronを調査する
cronって色々な書き方あるじゃないですか。5分間隔だと */5 *
とか、毎時2分から5分間隔であれば 2-59/5 *
とか、0時から6時・18時から23時の毎時0分だと 0 0-6,18-23
とか。短くスマートに書けるのはいいんですが、じゃあ「22時台に動いている処理は?」って言われると、ぱっと出てこないんですよね。grepしても出てこない。台帳作っとけよという話なんですが、なんというか…台帳をメンテするのも大変というか…台帳が信用おけないというか。
なので、cronの内容から「時」のフィールドを展開するワンライナーを考えてみました。かなり力技で。
メンテ等で影響するジョブを調査する上では「何時台に動いているバッチ」がわかればいいだろうと思うので、「時」のフィールドだけを対象にしています。
たとえばこんな感じのcronが登録されていたときに、
|
|
以下のawkのワンライナーを通せばこんな感じで展開されます。カンマが前後についているのは、grep等で引っ掛けやすくするためです。
|
|
このawkをフォーマットしたものが以下です。
|
|
これをExcelに落とし込むと、こんな感じで表現できます。
この例だと、以下の関数が入ってます。
- C2:
=LEFT(B2,FIND(" ",B2)-1)
- D2:
=MID(B2,FIND(" ",B2)+1,1000)
- E2:
=IF(ISERR(FIND(","&E$1&",",$C2)),"","■")
まぁまぁいい感じじゃないですかね。このワンライナーをエイリアス登録しとけば便利かな。