シェルスクリプトをdaemon化する方法

こんにちは、mi2yo4です。
お盆を過ぎたら朝晩が過ごしやすい気候になったような気がします。
夜などは秋の虫の音が聞こえてきて、少しずつ季節は変わっていくんだなぁ…と思っている所です。

さて、今日はちょっとしたシェルスクリプトを動作させたい&電源が入っている限りずっと動かしたい、というような要求がありまして、簡単なやり方であればrc.localなどでコマンドの後に&でも書いておけばいいんですが、あまりスマートでは無い…

そんな時はシェルスクリプトをdaemonとして動作させればいいのではないか?と思って調べてみました。

daemon化ツールいろいろ

調べてみると色々とあるようです。

start-stop-daemon

  • Raspiに標準装備(Debian系にはパッケージがあるようです)
  • スケルトンスクリプトをコピーして同様に使うだけ

daemontools

  • UNIX のサービスを管理するツール集
  • daemonを監視、起動するなどが可能

forever

  • node.jsスクリプトをdaemon化したい場合に使う
  • 当然node.jsのインストールが必要

nohupでdaemon化

  • OSXなどでstart-stop-daemonが使えない場合に

supervisor

  • pythonを使ったdaemon化tool
  • 主要なディストリビューションだとyum,apt-getなどで導入が簡単
  • バージョンが2系と3系で少し設定が違う

調べてみた感想など

start-stop-daemonぐらいしか知らなかったのですが、daemontoolsなんて枯れていて良さそうですね。特にdaemon監視をして、プロセスが無ければ起動もしてくれるそうで、色々と使えそうな気がします。
とは言え、今回は以前にも少し使ったことのあるstart-stop-daemonでまた一つシェルスクリプトをdaemon化することにしました。
最近時間が押していて…orz

ちなみに、これで何をするのかと言うと…直接的では無いですが、近い将来実現するであろう「ログBOXのCO2濃度(大気)校正」の一部として動いて貰おうと計画しています。

ユーザーがスマホやPCから「校正」ボタンをクリックすると、ログBOX上でCO2濃度を校正してくれる、と言うものです。

ちょっと楽しみではありませんか?
また進展がありましたら、ここかFacebook上にでも書いてみますね。
それではまた!

追記:
supervisorというツールを試してみました