(-> % read write unlearn)

My writings on this area are my own delusion

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.

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