!!!概要 Solaris 10ではサービスの管理方法が大幅に変わりました。一部のサービスは従来のRCスクリプトを用いますが、多くのサービスはSMF(Service Management Facility)という仕組みで管理するようになりました。 SMFには以下のような機能があります。 *サービスを一元管理できる **svcadm, svcsなどのコマンドでまとめてサービスを管理できます。 *サービスの依存関係を記述できる **従来のRCスクリプトではファイル名の数字で起動順序を指定していましたが、もっと柔軟にサービスの依存関係を記述できます。また、サービスの起動は並行的に行われるので起動時間も短縮されます。 *プロセスが停止すると自動的に再起動する **SMFで起動したプロセスが停止すると自動的にサービスの再起動を行います。従来のようにkillコマンドなどでプロセスを停止させても自動的に再起動してしまうので注意が必要です。 コンセプトとしては、DJB氏の[daemontools|http://cr.yp.to/daemontools.html]に似ています。ちょっと取っつきづらいですが慣れれば従来のRCスクリプトよりむしろ楽なので利用する価値はあります。 SMFではサービスをFMRI(Fault Managed Resource Identifier)という名称で識別します。 たとえばSendmailは以下のようなFMRIで識別されます。 svc:/network/smtp:sendmail FMRIは「smtp:sendmail」や「sendmail」など一部分で指定することもできます。 !!!ディレクトリ構成 !/lib/svc/method/ サービスの起動・停止などを行うスクリプトを置きます。スクリプトの内容は従来/etc/init.d以下に置かれていたRCスクリプトとほぼ同じです。 !/var/svc/manifest/ サービスのマニフェストファイルを置きます。マニフェストファイルはサービスの起動・終了方法や依存関係を記述したXMLファイルです。 !/var/svc/log/ サービス起動・停止のログが出力されます。 !/etc/svc/ サービス構成リポジトリが置かれます。svccfgやsvcpropなどのコマンドを通して操作します。リポジトリのDBはsqliteが使われています。 !!!主なコマンド !サービスの一覧を表示する $ svcs !無効なサービスも含めて一覧を表示する $ svcs -a !サービスの詳細を表示する $ svcs -l FMRI !正常に動作していないサービスを表示する $ svcs -xv !サービスを有効にする # svcadm enable FMRI !サービスを一時的に有効にする # svcadm -t enable FMRI !サービスを無効にする # svcadm disable FMRI !サービスを一時的に無効にする # svcadm -t disable FMRI !サービスを再起動する # svcadm restart FMRI !サービスをリフレッシュする(設定ファイルを読み直す) # svcadm refresh FMRI !マニフェストファイルをインポートする # svccfg import file.xml !マニフェストファイルをエクスポートする # svccfg export FMRI > file.xml !inetdが制御するサービスを表示する # inetadm !inetd.confのエントリをSMFサービスマニフェストに変換する Solaris 10では、inetdサービスもSMFで管理するようになりました。Solaris 10のinetdはinetd.confを読み込みません。新しくinetd.confにサービスを追加した後はinetconvコマンドでエントリをSMFサービスマニフェストに変換する必要があります。 # inetconv !!!補足 !サービス自動再起動の条件 SMFでは起動スクリプトから起動されたプロセスがすべて終了した場合に障害とみなしサービスを再起動します。1つの起動スクリプトから複数のデーモンプロセスを起動しているような場合、デーモンプロセスが1つだけ終了してもサービスの再起動は行われません。複数のデーモンプロセスのうち1つだけが欠けてもサービスを再起動したい場合はプロセス毎に起動スクリプトを分ける必要があります。 !マニフェストファイルのDTD /usr/share/lib/xml/dtd/service_bundle.dtd.1 にあります。 !!!リンク *[docs.sun.com: Solaris のシステム管理 (基本編)|http://docs.sun.com/app/docs/doc/819-0378] *[docs.sun.com: SunOS リファレンスマニュアル: svcs(1)|http://docs.sun.com/app/docs/doc/819-1210/6n3j74jtg?a=view] *[docs.sun.com: SunOS リファレンスマニュアル: svcadm(1M)|http://docs.sun.com/app/docs/doc/819-1211/6n3j834af?a=view] *[docs.sun.com: SunOS リファレンスマニュアル: inetadm(1M)|http://docs.sun.com/app/docs/doc/819-1211/6n3j8347g?a=view] *[docs.sun.com: SunOS リファレンスマニュアル: inetconv(1M)|http://docs.sun.com/app/docs/doc/819-1211/6n3j8347h?a=view] ----