Go to main content
Oracle® Solaris 11.3 でのシステムサービスの開発

印刷ビューの終了

更新: 2016 年 11 月
 
 

SMF サービスの作成

SMF サービスは、1 個以上のサービスマニフェストと 0 個以上のプロファイルファイルで構成されます。サービスインスタンスは、インスタンスの作業を実行するメソッドを定義します。

サービスマニフェストには、インスタンス、依存関係、アプリケーション構成プロパティー、サービスの開始および停止時に実行するメソッドなど、特定のサービスに関連付けられたプロパティーの完全なセットが含まれています。マニフェストには、サービスの説明などテンプレート情報も記載されています。

プロファイルは、マニフェストですでに定義されているサービスのインスタンスを定義できます。プロファイルは、これらのサービスインスタンスの新しいプロパティーと、サービスマニフェストで定義されているプロパティーの新しい値を定義できます。プロファイルは、テンプレート要素を定義できません。

SMF マニフェストとプロファイルの内容と形式の詳細は、service_bundle(4) のマニュアルページおよび /usr/share/lib/xml/dtd/service_bundle.dtd.1 サービスバンドル DTD を参照してください。また、命名規則とプロパティーグループタイプの割り当てについては、ネームサービス、インスタンス、プロパティーグループ、およびプロパティーを、さまざまなプロパティータイプの値については、プロパティーグループタイプとプロパティータイプを参照してください。

メソッドは、デーモン、ほかのバイナリ実行可能ファイル、または実行可能スクリプトの場合があります。詳細は、サービスインスタンスメソッドの作成を参照してください。

複数のマニフェストを使用して、単一のサービスを記述できます。このメソッドはたとえば、サービスの既存のマニフェストを変更することなく、サービスの新しいインスタンスを定義する場合に役立ちます。詳細は、複数のマニフェストを使用したサービスの作成を参照してください。

カスタムサービスを作成する際には、次のベストプラクティスを使用してください。

  • Oracle Solaris 11.3 でのシステムサービスの管理 の サービス名で説明されているように、サービス名には接頭辞 site を使用します。site の接頭辞はサイト固有のカスタマイズ用に予約されています。svc:/site/service-name という名前のサービスは、Oracle Solaris リリースで提供されるサービスと競合しません。

  • ユーザーがこのサービスに関する情報を svcs コマンドと svccfg describe コマンドから取得できるように、名前と説明メタデータをマニフェストに追加します。プロパティー値の説明も追加できます。DTD 内の valuevalues、および template の要素を参照してください。

  • svccfg validate コマンドを使用して、サービスマニフェストファイルまたはサービスインスタンス FMRI を検証します。

  • smf_method_exit() 関数を使用して、メソッドスクリプトの終了の成功または失敗をサービスインスタンスのログファイルで文書化します。

  • 次の表に示されている標準の場所にマニフェスト、プロファイル、およびメソッドファイルを格納します。

表 1  サービス開発ファイルの標準の場所
ファイル
標準の場所
マニフェスト
/lib/svc/manifest/site
プロファイル
/etc/svc/profile/site
メソッド
/lib/svc/method

これらの場所に格納されたマニフェストとプロファイルは、サービスが起動する前に、ブートプロセス中に svc:/system/early-manifest-import:default サービスによってサービス構成リポジトリにインポートされます。インポートプロセスを早期に実行することにより、サービスが起動するよりも先に、最新のマニフェストに含まれる情報がリポジトリに確実に取り込まれます。これらの標準の場所に格納されたマニフェストとプロファイルは、svc:/system/manifest-import サービスが再起動するときにもインポートされます。

標準の場所にあるマニフェスト、プロファイル、およびメソッドファイルを使用して、manifest-import サービスを再起動し、サービスインスタンスをインストールおよび構成します。svcs コマンドを使用して、サービスインスタンスのステータスを確認します。