概要
- マシンブート時にsvscanコマンドを実行する。
- svscanプロセスは/service以下にディレクトリ(/service/qmail-sendなど)を見つけるとsuperviseプロセスを起動する。
- superviseプロセスは(/service/qmail-send/)runスクリプトを実行され、runスクリプトに書かれたデーモン(qmailやApacheなど)が実行される。
- デーモンが終了(異常終了でも正常終了でも)すると、superviseプロセスはrunスクリプトを再実行する。
- これによりデーモンがなんらかの理由で終了しても、すぐに勝手に再起動することになる。
daemontoolsはフォアグラウンドで実行されるプロセス(デーモン)しか制御できない
- Apacheのように起動と同時に勝手にバックグラウンドに移行するデーモンは扱えない。(というより、DJBはバックグラウンドに移行するデーモンソフトを悪いデザインと考えている)
- Apacheの場合、daemontools用に-DNO_DETACHというオプションが用意されている。(そういうオプションがないデーモンソフトだった場合、DJBなら自分で一からプログラムを書く)
- この理由のため、runスクリプトで実行するコマンド(デーモン)はexecの引数にして実行する。
参考