LoginSignup
11
10

More than 5 years have passed since last update.

golangでcrontabからドキュメントを作成するコマンドラインツール crondocを作った

Last updated at Posted at 2016-02-19

きっかけ

いくつかのサーバーの設定、ミドルウェア変更することになり、
影響範囲を確認していたのですが、サーバーごとにcronの運用が統一されていなかったのでcronまわり影響範囲を確認するのに時間がかかってしまいました

そこでcronの運用フローを統一する過程でcronの簡単なドキュメントを作成したくなりました

その際、javadoc,phpdocのcron版みたいのがないか探してみたのですが、ないようなのでせっかくなので自作してみました

crondocの機能

ざっくり下記のような機能で作ってみました

  • 標準入力、ファイル指定でcrontabからドキュメントを出力
  • 改行までをひとグループとしてドキュメント出力
  • ドキュメントを出力はmarkdowm形式
  • @authorなどのタグ付ができる

出力例

現状下記のようなcrontabの場合はこんな感じです

  • crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# @title monday.sh
# @author hoge
# @param env[dev|stg|prod]
# start every monday
0 10 * * 1 sh /home/hoge/happy_monday.sh prod

↓↓↓

Environment variable

  • SHELL=/bin/bash
  • PATH=/sbin:/bin:/usr/sbin:/usr/bin
  • MAILTO=root,hoge@mail.co.jp
  • HOME=/

monday.sh

  • Author : hoge
  • param : env[dev|stg|prod]
  • start every monday
min hour day month day week command
0 10 * * Mon sh /home/hoge/happy_monday.sh prod

使い方

ソースはこちら
crondoc

バイナリを落としてきて、下記のようにすればドキュメントが出力されるはずです

$ crodoc /etc/crontab
$ crontab -l | crodoc -s

TODO

  • markdown以外の出力形式にも対応
  • タグの種類増やす

まとめ

cron周りはあまり触る回数、人も多くなく属人化しやすい箇所なのでフロー、ドキュメント共有して見える化していければ

せっかく作るならコマンドっぽくしたいってだけでgolangで作ってみたのですが、
わからないこと多く時間かかったし、全然golang的な書き方できてないがいい経験になった。今後も継続!

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10