svcbundle サービスバンドル生成ツールを使用すると、単純なサービスを作成したり、より複雑なサービスを起動したりできます。詳細は、svcbundle(1M)のマニュアルページを参照してください。サービスバンドル DTD やほかのサービスマニフェストを使用して、より複雑なサービスを完了させることができます。
デフォルトで、svcbundle は transient サービスを作成します。このサービスの起動メソッドスクリプトが、長時間実行するデーモンを起動し、そのためにこのサービスが contract サービスであるかどうかを判断します。サービスモデルについては、Oracle Solaris 11.3 でのシステムサービスの管理 の サービスモデル、svcbundle(1M) マニュアルページの model プロパティー、および svc.startd(1M) マニュアルページの startd/duration プロパティーを参照してください。
この例のサービスでは、ex_svc という名前のカスタムスクリプトを起動メソッドとして使用します。このスクリプトを /lib/svc/method/ex_svc にコピーします。
この例では、サービス名は 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 または daemon を model または duration プロパティーの値として指定します。
/tmp/ex_svc.xml マニフェストの内容が必要なものかを検証します。たとえば、依存関係を追加したり、メソッドのタイムアウトを調整したりする必要がある場合があります。サービスの内容とサービスのプロパティーの使用方法を説明するコメントを追加します。
svccfg validate コマンドを使用して、サービスマニフェストが有効であることを確認します。
$ svccfg validate /tmp/ex_svc.xml
$ cp /tmp/ex_svc.xml /lib/svc/manifest/site/ex_svc.xml
$ svcadm restart manifest-import
新しいサービスが存在し、予想される状態になっていることを検証します。
$ svcs ex-svc
新しいサービスマニフェストに変更を加える必要がない場合、-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