LoginSignup
2
3

More than 5 years have passed since last update.

cronの実行時間を見積もりするツールを作った(+ PyPIデビュー)

Last updated at Posted at 2017-04-03

ちょっとした野暮用で小一時間で作ったPythonツールです。
せっかくなので、PyPIにも初めて登録したので、Qiitaでも紹介。
2017年になってcron使っている人は少ないかもしれませんが...

どんなツールか

crontabで設定したクーロンが、指定した時間内にどの様に動くかをテキスト出力するツール。
複数サーバで、複数プログラムを串刺しに簡単に調べられます。

もともとは、サーバメンテナンスで、cronの状況を確認する必要があり、さっと作りました。

ソースコード

以下にあります。(スターがつくと喜びます)

使い方

インストール

pip install cronquot

実行方法

以下の様な感じでcrontabのデータをcrontabディレクトリ配下に用意し、crontab -lで出力したファイルを配置します。

$ cat crontab/batch.txt
*/30    */10    11  *   *   /usr/local/bin/potato.sh
*/10    */2 2   *   *   echo `date` >> /tmp/log.txt

以下の様な感じで実行すれば、result.csvファイルができて、確認できます。
引数で実行期間を指定できます。引数がなければ本日の0時〜24時になります。

  • 開始は -sYYYYmmddHHMMSS
  • 終了は -eYYYYmmddHHMMSS
(venv)ShoheiMacBookPro:tmp shohei$ cronquot -s20170403100000 -e20170403120000
(venv)ShoheiMacBookPro:tmp shohei$ cat result.csv
date, hour, miniute, second, scrip, server
2017-04-03,10,10,00,echo `date` >> /tmp/log.txt,batch
2017-04-03,10,20,00,echo `date` >> /tmp/log.txt,batch
2017-04-03,10,30,00,/usr/local/bin/potato.sh,batch
2017-04-03,10,30,00,echo `date` >> /tmp/log.txt,batch
2017-04-03,10,40,00,echo `date` >> /tmp/log.txt,batch
2017-04-03,10,50,00,echo `date` >> /tmp/log.txt,batch
2017-04-03,11,00,00,/usr/local/bin/potato.sh,batch
2017-04-03,11,30,00,/usr/local/bin/potato.sh,batch
2017-04-03,12,00,00,/usr/local/bin/potato.sh,batch
2017-04-03,12,00,00,echo `date` >> /tmp/log.txt,batch

crontabディレクトリに複数ファイルを入れれば、まとめて見てくれます。
サーバを串刺しで見ることも可能です。
-dでディレクトリを指定することも可能です)

注意

  • cronの区切りはタブでないと使えません。
    僕自身がタブで困らなかったので、特別機能追加してないです。
    必要な方はPR出してもらえると助かります(issue上げてもらうと対応するかも)

その他

自分用に作ったツールなので、バグってたらごめんなさい...
実行結果を見るツールは世の中に結構あるのですが、コマンドからサクって動くものが欲しかったので作りました。
やっぱり、ちゃんとPyPIに出そうと思って作ると簡単なツールでも神経をつかうなと感じました。
PyPIの使い方も、そのうち書こうかなと。

2
3
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
2
3