読者です 読者をやめる 読者になる 読者になる

(-> % read write unlearn)

All opinions expressed are solely my own and do not express the views or opinions of my employer.

crontab のスケジューリングをタイムラインで表示する

cron は複雑なスケジューリングも1行で設定できてしまいます。あんまり頑張ると見づらいです。「日(3個目)」と「曜日(5個目)」との間でだけOR条件なのが忘れやすいです。

  • cronから、実際どういう順番で実行されていくのか
  • いつの時間帯に実行が集中してるか

見易くするためにタイムラインで表示してくれるのを先週書いてみました。 https://github.com/hatappo/cronv でも、使ってみたらあんまり見易くなってなかったです。

$ rake demo

---------- sample crontab settings.
5-9,6,*/12 */2 * * * echo 123 > ~/foo.txt 2>&1
*/5        */4 * * * echo 456 > ~/bar.txt 2>&1
5,10,15      * * * * echo 789 > ~/baz.txt 2>&1
----------
このcrontab設定で現在時から4時間の間に実行されるコマンドをタイムライン表示します。

exec: cron_timeline_diagram = Crontav::Visualizer.new(sample_cron).show(60 * 60 * 4)
 ┏━━━ 2015-04-23 01:03:00 +0900. Displaying from.
 ・
 ・
 ・
 ┣━━━ 2015-04-23 01:05:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 01:10:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 01:15:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 02:00:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━┳━ 2015-04-23 02:05:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┃ ┗━ 2015-04-23 02:05:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ┣━━━ 2015-04-23 02:06:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 02:07:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 02:08:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 02:09:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 02:10:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 02:12:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 02:15:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 02:24:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 02:36:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 02:48:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 03:05:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 03:10:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 03:15:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━┳━ 2015-04-23 04:00:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┃ ┗━ 2015-04-23 04:00:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┣━┳━ 2015-04-23 04:05:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┃ ┣━ 2015-04-23 04:05:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ┃ ┗━ 2015-04-23 04:05:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ┣━━━ 2015-04-23 04:06:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 04:07:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 04:08:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 04:09:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━┳━ 2015-04-23 04:10:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ┃ ┗━ 2015-04-23 04:10:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:12:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━┳━ 2015-04-23 04:15:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ┃ ┗━ 2015-04-23 04:15:00 +0900 -> echo 789 > ~/baz.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:20:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:24:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ┣━━━ 2015-04-23 04:25:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:30:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:35:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ┣━━━ 2015-04-23 04:36:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:40:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:45:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:48:00 +0900 -> echo 123 > ~/foo.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:50:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┣━━━ 2015-04-23 04:55:00 +0900 -> echo 456 > ~/bar.txt 2>&1
 ・
 ・
 ・
 ┗━━━ 2015-04-23 05:04:00 +0900 Displayed to.

ブログに貼ったらずれてしまいました。。