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

印刷ビューの終了

更新: 2016 年 11 月
 
 

サービスバンドル生成ツールを使用した SMF サービスの作成

svcbundle サービスバンドル生成ツールを使用すると、単純なサービスを作成したり、より複雑なサービスを起動したりできます。詳細は、svcbundle(1M)のマニュアルページを参照してください。サービスバンドル DTD やほかのサービスマニフェストを使用して、より複雑なサービスを完了させることができます。

svcbundle を使用して SMF サービスを作成する方法


注 -  定期的なサービスを作成する場合は、この手順を使用しないでください。svcbundle を使用して、定期的なサービスを作成する方法を参照してください。
  1. サービスモデルを判断します。

    デフォルトで、svcbundletransient サービスを作成します。このサービスの起動メソッドスクリプトが、長時間実行するデーモンを起動し、そのためにこのサービスが contract サービスであるかどうかを判断します。サービスモデルについては、Oracle Solaris 11.3 でのシステムサービスの管理 の サービスモデルsvcbundle(1M) マニュアルページの model プロパティー、および svc.startd(1M) マニュアルページの startd/duration プロパティーを参照してください。

  2. 標準の場所にスクリプトをコピーします。

    この例のサービスでは、ex_svc という名前のカスタムスクリプトを起動メソッドとして使用します。このスクリプトを /lib/svc/method/ex_svc にコピーします。

  3. 初期マニフェストを作成します。

    この例では、サービス名は site/ex_svc です。このサービスは、一時サービスであり、停止メソッドを必要としません。

    $ svcbundle -o /tmp/ex_svc.xml -s service-name=site/ex_svc \
    -s start-method=/lib/svc/method/ex_svc

    このサービスが契約サービスの場合、-s model=contract のように contract または daemonmodel または duration プロパティーの値として指定します。

  4. マニフェストに対し必要な変更をすべて行います。

    /tmp/ex_svc.xml マニフェストの内容が必要なものかを検証します。たとえば、依存関係を追加したり、メソッドのタイムアウトを調整したりする必要がある場合があります。サービスの内容とサービスのプロパティーの使用方法を説明するコメントを追加します。

  5. マニフェストが有効であることを検証します。

    svccfg validate コマンドを使用して、サービスマニフェストが有効であることを確認します。

    $ svccfg validate /tmp/ex_svc.xml
  6. マニフェストを標準ディレクトリにコピーします。
    $ cp /tmp/ex_svc.xml /lib/svc/manifest/site/ex_svc.xml
  7. マニフェストをインポートし、サービスを起動します。
    $ svcadm restart manifest-import
  8. 新しいサービスを一覧表示します。

    新しいサービスが存在し、予想される状態になっていることを検証します。

    $ svcs ex-svc
使用例 1  生成されたマニフェストを自動的にインストールする

新しいサービスマニフェストに変更を加える必要がない場合、-i オプションを使用して、作成後すぐにプロファイルをインストールできます。svcbundle コマンドは、/lib/svc/manifest/site にマニフェストを書き込み、manifest-import サービスを再起動します。/lib/svc/manifest/site ディレクトリにおける同じ名前の既存のファイルは上書きされます。

$ svcbundle -i -s service-name=site/ex_svc \
-s start-method=/lib/svc/method/ex_svc