Samba 3.0.21以降では、図4のようにUNIX上のデーモンをWindowsのサービスインターフェースを経由して制御する機能が追加されました。

図4:デーモンの状況をWindowsから参照したところ (画像をクリックすると別ウィンドウに拡大図を表示します)
これは以下の手順で設定可能です。
- SambaのLIBDIR(通常smb.confが存在しているディレクトリ)以下にsvcctlというディレクトリを作成する
- 制御対象としたい起動スクリプト(通常/etc/init.d以下に存在)のシンボリックリンク(またはコピー)を作成する
- 起動スクリプト名をsvcctl listパラメータの値として空白で区切って列挙する
表3:NIX上のデーモンをWindowsのサービスインターフェースを経由して制御する手順
例えば、inetdとexim4をこの制御下に置きたい場合は下記のようにシンボリックリンクを作成します。
# cd /usr/local/samba/lib/svcctl ← Sambaのインストール箇所に依存
# ln -s /etc/init.d/inetd .
# ln -s /etc/init.d/exim4 .
そのあと上smb.confで下記のように設定します。
[global]
...
svcctl list = exim4 inetd
ただし起動スクリプトは、以下のような条件を満たす必要があります。
- startを引数とすることでデーモンが起動する。起動に成功すると0を返却する
- stop を引数とすることでデーモンを終了させる。終了に成功すると0を返却する
- status を引数とすることで、デーモンの起動状況を確認する。起動している場合は0、それ以外の場合は1を返却する
表:起動スクリプトが満たす条件
Debian GNU/Linuxの起動スクリプトでは、statusという引数がサポートされていないので、下記のようにしてstatus引数の処理を追加する必要があります。
status引数のサポート例(inetdの場合)
status)
if [ "pgrep inetd | wc -l | grep -v grep`" == "0" ] ; then
exit 1
else
exit 0
fi
;;
|