#:g1: cl-cronの紹介

Posted 2014-10-21 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の295日目です。

cl-cronとはなにか

 cl-cronは、Mackram Ghassan Raydan氏作のCommon Lispでのcron実装です。

パッケージ情報

パッケージ名cl-cron
Quicklisp
CLiKiCLiki: cl-cron
Quickdocscl-cron | Quickdocs
CL Test Grid: ビルド状況cl-cron | CL Test Grid

インストール方法

(ql:quickload :cl-cron)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 Lisp処理系でcron的なものを実現したものは幾つかあるようなのですが、cl-cronは処理系内部からLispの関数を実行するタイプのようです。

(cron:start-cron)

(cron:stop-cron)

で実行開始/停止で、ジョブの投入には、make-cron-jobを利用します。

(cron:make-cron-job (lambda () (print "hello")))

とすれば、毎分helloを出力するジョブが投入されます。実行時刻の指定は大体cronと同じです。

start-cronは、起動時にcron:*cron-load-file*で指定したファイルを読みに行くので、このファイルにジョブを記載しておけばまとめてジョブを投入できます。

(setq cron:*cron-load-file* "~/.cl-cron")

として、~/.cl-cronに、

;;; 毎時の0、15、30、45で実行
(cron:make-cron-job (lambda () (print "hello"))
                    :minute '(0 15 30 45)) 

;;; 毎週月曜の0:00に実行 (cron:make-cron-job (lambda () (print "hello")) :minute 0 :hour 0 :day-of-week 0)

;;; 毎分実行 (cron:make-cron-job (lambda () (print "hello")))

;;; *EOF*

のようなものを定義して利用することが可能です。

まとめ

 今回は、cl-cronを紹介してみました。
Common Lisp製のデーモンかなにかの中で定期実行したい場合に便利そうですね。

comments powered by Disqus