なぜ daemontools を使うのか

_ djb が自作ツールの更新を放棄してからずいぶんたって、qmail やら djbdns やらはゆっくりと置き替えが進んでいるようだ。が、いまだに使い続けられているものもある。具体的には daemontools。いまだに daemontools を 使うネタが書かれているのを見て絶望した。代替物はほかにもあるのに。
(中略)
_ そんなわけで、わしのことを anti djb だと思っている一部の方々が飽きて燃料投下を望んでいるような声をだいぶ前にどっか(どこだか忘れた)で見かけたので、要望に答えて若干 djb を dis り気味に runit と ipsvd を解説してみました。わしゃ別に「いいものを使う」というだけで、djb が嫌いなわけでもなんでもないんだけどね。ちなみに、自分自身では好き嫌い以前に必要性を感じてないので使っておりませぬ(これ書くために何年かぶりにインストールした)。いいじゃん、ふつーのやりかたで。何が困るの?

どさにっき

おもしろく読ませていただいた。寡聞にして runit を知らなかったので、勉強になりました。で、感じたのが、視点が自分と違うのかなぁ、ということ。

自分がなぜ daemontools を使うか、っていうと、通常のプログラムをそのままデーモン化できるから (わざわざデーモン化するコードを書かなくていいから) ってのが最大の理由*1。具体的に言うと、

  • デーモン化にまつわるもろもろ (fork, setsid, setuid, 標準入出力)
  • (特にエラー) ログのローテート
  • デーモンの制御 (pid の記録とシグナルの送信)
  • 落ちたデーモンの再起動 *2

といったことの面倒見てくれるので、たとえば MQ ベースでいろいろタスクを作ったりしてるとうれしい。一方で、ウェブが仕事の中心だと、接続毎にプロセス作ったりしないので inetd とか tcpserver とかは関係ない。

でまあ、そんなタスク群が /service 下にまとまって配置されてるから管理が楽かな、って感じです。rc.d にも特に恨みはないので併用してる。

*1:他にいいクロスプラットフォームの代替品があるかは知らない

*2:有名なプログラムでも結構落ちたりするし。それに自作するとき、落とさないよう気をつける必要もなくなるし (コマンドラインのプログラム同様、やばそうだったらとりあえず落とす、でOK)