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

印刷ビューの終了

更新: 2016 年 11 月
 
 

サービス開発のベストプラクティス

サービスを開発する際は、このセクションで説明するガイドラインに従ってください。

サービスメソッドのベストプラクティス

サービス起動メソッドやその他のサービスメソッドを開発する際は、このセクションで説明するガイドラインに従ってください。

SMF メソッドの終了および役に立つ終了理由の使用

サービスでは、初期化が完了し、サービスを提供する準備ができたら正常ステータスが返されることが予測されます。

起動メソッドを終了するには、smf_method_exit() を使用します。exit() は使用しないでください。smf_method_exit() インタフェースには次の引数が必要です。

  • /lib/svc/share/smf_exit_codes.sh 内または smf_method(5) のマニュアルページ内で定義されているメソッドの終了コードの 1 つ

  • 終了の理由の簡単な説明

  • 終了の理由のより長い説明

エラーメッセージが有益 (問題を解決するためのガイドラインを含む) であることを確認してください。メソッドで呼び出されたコマンドから、メッセージやその他の情報を取得する必要がある場合もあります。メソッドが既存の実行可能ファイルである場合は、終了メッセージを改善するために、メソッドスクリプト内でその実行可能ファイルを呼び出す必要がある場合もあります。これらのメッセージは、システム管理者がサービスログファイルで確認します。

詳細は、smf_method_exit(3SCF) のマニュアルページを参照してください。

依存関係の使用、タイムアウト使用の回避

サービスの初期化が完了するまで、起動メソッドを終了しないでください。サービスの初期化が完了する前に起動メソッドを終了した場合は、このサービスに依存するサービスを起動できません。

メソッドタスクが完了するのに長い時間がかかるという理由だけでエラーが発生するのを回避するため、timeout_seconds プロパティーに適した値を設定してください。

依存関係が online 状態に達するのに必要な時間を許可するために timeout_seconds 値またはその他の種類のタイムアウトや待機は使用しないでください。代わりに、依存関係を適切に宣言してください。依存関係が起動するまでに十分な時間を許可することに加えて、このサービスに require 依存関係が含まれるサービスでエラーが発生すると、このサービスでもエラーが発生し、適切なメッセージが表示され、エラーが発生した依存関係が起動するまでの待機が続行されないようにする必要があります。この場合も、適切に宣言された dependency 要素が正しい実装です。Oracle Solaris 11.3 でのシステムサービスの管理 の サービス依存関係の表示および smf(5) のマニュアルページの依存関係に関するセクションを参照してください。

ドキュメントの指定

smf_template(5) のマニュアルページの説明に従って、適切なテンプレート情報を指定します。管理者は svccfg describe コマンドを使用して、この情報を表示できます。

  • smf_template(5) のマニュアルページのサービスおよびインスタンスの共通名に関するセクションの説明に従って、サービスを表す短い共通名を指定します。

  • 詳細は、適切なマニュアルページ (manpage 要素) または信頼できる URL (doc_link 要素) を参照してください。

  • このサービスに固有のプロパティーグループおよびプロパティーの名前、説明、選択、および制限を指定します。

サービスマニフェストの検証

サービスマニフェストを検証するには、svccfg validate コマンドを使用します。

svccfg validate コマンドがエラー「Required property group missing」で失敗した場合、部分的なマニフェストを検証しようとしている可能性があります。単一のサービスが、複数のマニフェストにまたがって指定されている可能性があります。このエラーを回避するには、複数のマニフェストを使用したサービスの作成で説明されているように、複数マニフェストサービスのすべてのマニフェストで service_bundle 要素に include プロパティーを指定してください。

標準の場所の使用

サービスマニフェストおよびプロファイルを、標準の所有権とアクセス権を持つ標準の場所にコピーします。マニフェストおよびプロファイルのファイルには、標準以外の場所を使用しないでください。マニフェストおよびプロファイルの共通の場所については、Oracle Solaris 11.3 でのシステムサービスの管理 の サービスバンドルまたは表 1を参照してください。

自身で使用するサービスを作成する場合は、サービス名の先頭に site を使用し (svc:/site/service-name:instance-name)、マニフェストを /lib/svc/manifest/site に配置します。

サービスをテストするには、マニフェストおよび関連付けられたプロファイルを正しい標準の場所に配置し、manifest-import サービスを起動します。関連情報については、Oracle Solaris 11.3 でのシステムサービスの管理 の 第 5 章, 複数のシステムの構成およびOracle Solaris 11.3 でのシステムサービスの管理 の 機能低下、オフライン、または保守であるインスタンスの修復を参照してください。