D. J. Bernstein
UNIX
daemontools

svscan プログラム

svscan はサービスの集まりを開始させ、監視します。

使い方

svscan は現在のディレクトリの各サブディレクトリ(1000個のサブディレクトリの制限まで)に対して、一つの supervise のプロセスを開始させます。 svscan はドットで始まるサブディレクトリ名をとばします。 supervisesvscan のパスになければなりません。

サブディレクトリ sub が sticky であれば、svscan は一組の supervise プロセス、sub に一つ、sub/log に一つ、を開始させ、それらの間をパイプでつなぎます。

5秒毎に、svscan は再びサブディレクトリを調べます。 新しいサブディレクトリを見つけたら、新しい supervise プロセスを開始させます。 supervise プロセスが終了している古いサブディレクトリを見つけたら、その supervise プロセスを再開させます。 sticky の場合は、データが失われないように同じパイプを再使用します。

svscan は絶えず動くように設計されています。 パイプを作成するときや supervise を動かすときに問題が生じたら、メッセージを標準エラーに出力し、5秒後に再び試します。

svscan がコマンドライン引数を与えられたら、開始時にそのディレクトリに移動します。

/service ディレクトリ

通常、svscan はブート時に新しい /service ディレクトリで開始されます。 (バージョン0.70以降では)これを設定するために、初めに、root として /service を作成してください。
     mkdir /service
     chmod 755 /service

それからシステムのブートスクリプトから svscan を起動させます。

すぐに ps を使って svscan が動作しているか確認してください。

新しいサービスを導入するためには、/service/sub からそのファイルシステムの他の場所にあるディレクトリへシンボリック・リンクを作ってください。 svscan は 5 秒以内にそのリンクを見つけ、一つの supervise プロセス、あるいは sub が sticky の場合は 2 つの supervise プロセスを開始させます。 その後、svc を使って、/service/sub でのサービスを制御できます。

サービスを除去するためには、シンボリックリンクを削除して、それから supervise プロセスを停めます:

     cd /service/sub
     rm /service/sub
     svc -dx . log

他のサービス監視ツール

SVR4形式の init プログラムは /etc/inittab に記述されたデーモンを起動させます。

Sun の sac プログラムは /etc/saf/_sactab に記述された ``port monitors'' を起動させます。


訳:滝澤 隆史
Last modified: Sun Nov 19 20:03:50 2000