Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2022年7月27日
 
 

svcbundle(8)

名前

svcbundle - SMF サービスバンドルの作成

形式

svcbundle [-i | -o output_file] -s name=value...
svcbundle help [name]

説明

svcbundle コマンドは、SMF マニフェストを生成するために使用されます。マニフェストは複数の –s オプションによって指定されます。マニフェストを生成するには、service-name および start-method を指定する必要があります。その他の NV ペアはオプションであり、ユーザーはこれらを使用してサービスの詳細を指定できます。svccfg(8) 検証コマンドは、生成されたマニフェストで実行され、テンプレートの競合を検出します。

svcbundle を使用してプロファイルを生成することもできます。後述の bundle-type を参照してください。

2 つめの形式では、有効な名前がすべて一覧表示されるヘルプメッセージを標準出力に出力します。あるいは、help と名前を指定して、その名前に有効な値についての考察を表示することもできます。

ユーザーへの負担を軽減するために、svcbundle はマニフェストの生成時に、作業を簡素化するための仮定をいくつか設けます。これらの想定が、使用しているアプリケーションに適さない場合は、生成されたマニフェストを編集できます。

  • 生成されたマニフェストは、マスターリスタータ svc.startd(8) で使用されることを意図されています。

  • サービスの開始が早くなりすぎないように、svc:/milestone/multi-user への依存関係が生成されます。これの例外については、後述の rc-script を参照してください。In order to have a service start earlier, the manifest may be edited to depend on any specific services or any of the milestones described in smf(7).

  • バンドル名は service-name で提供される値と同じになります。

  • Timeouts for all exec_methods will be 60 seconds unless specified using timeout.However, timeout is set to 0 for periodic/scheduled services if no timeout is specified.

–i オプションの使用により、サービスのインストール作業の大半を svcbundle に実行させることができます。生成されたマニフェストは /lib/svc/manifest/site、または /etc/svc/profile/site 内のプロファイルに自動的に保存されます。生成されたファイルの名前は –s service-name で指定されるサービス名のベース名になり、ファイルには .xml 拡張子が付けられます。警告: svcbundle はその名前を持つ既存ファイルがあれば上書きします。

次に、svcbundlemanifest-import サービスを再起動して新しく作成されたファイルを処理し、それを SMF に組み込みます。マニフェストの場合、svcbundle はサービスが最終状態 (オンライン、無効、または保守のいずれか) に入るのを待機します。この待機期間の始めに、svcbundle は次を出力します。

svcbundle: waiting for service to reach final_state state

...ここで、final_state は enabled (有効) または disabled (無効) です。このメッセージが表示されたあとは、svcbundle を中断しても安全です。

–i オプションを使用するには、これらの限定されたディレクトリにファイルを作成し、manifest-import サービスを再起動するのに十分な承認が必要であることは明らかです。smf_security(7) を参照してください。

詳細説明

このセクションでは、名前/値 (NV) ペアについて説明します。

生成されたバンドルは、コマンド行で複数の -s オプションを使用することによって完全に定義されます。各 NV ペアの形式は name=value であり、ここでの namename はこのリストからのものです。

bundle-type

生成するサービスバンドルのタイプ。有効な値は、manifest および profile です。manifest がデフォルトです。

duration

model の同義語。

enabled

インスタンスを有効にすべきかどうかを示します。有効な値は、true および false です。デフォルト値は true です。

model

サービスモデルを設定します。これは startd/duration プロパティーの値です。svc.startd(8) を参照してください。モデルは、次のいずれかの値に設定できます。

  • contract

  • daemoncontract の同義語

  • child

  • waitchild の同義語

  • transient

デフォルトは transient です。

instance-name

インスタンスの名前。デフォルト値は default です。

instance-property=pg_name:prop_name:prop_type:value
service-property=pg_name:prop_name:prop_type:value

これらのオプションは、pg_name という名前のプロパティーグループをインスタンスまたはサービス内に作成するために使用され、それにはアプリケーションのタイプが割り当てられます。この PG には、prop_type タイプの 1 つの値を持つ、prop_name という名前のプロパティーが 1 つ含まれます。複数のプロパティーを持つプロパティーグループを作成するには、*-property を複数回呼び出します。ゼロまたはそれ以上の *-property= 宣言を使用できます。プロパティーグループが入れ子になっている (したがって、祖先を含む完全なプロパティーグループ名であるべき) 場合、あるいは、プロパティーグループ名またはプロパティー名に予約文字が含まれている場合は (smf(7) を参照)、プロパティーグループ名とプロパティー名はエンコードされる必要があります。

プロパティータイプをデフォルトにするには、2 つの連続するコロンを使用します。後述の「使用例」を参照してください。マニフェストの場合は、astring というデフォルトのプロパティータイプが使用されます。プロファイルの場合、プロパティーは通常ほかの情報ソースから判断できるため、それを指定する必要はありません。

rc-script=script_path:run_level

この NV ペアによって svcbundle は、レガシー rc スクリプトから SMF サービスへの変換を容易にするマニフェストを発行できます。script_pathrc スクリプトへのパスであり、run_levelrc スクリプトが実行されている実行レベルです (init(8) を参照)。script_path は、exec_method の開始と停止の要素をマニフェスト内に生成するために使用されます。exec 属性は次に設定されます。

script_path %m

run_level は依存関係の生成に使用されるため、そのスクリプトはブート中の適切な時期に実行されます。

refresh-method

サービスがリフレッシュされるときに実行するコマンド。この値を空白にしてもかまいません。この値には、smf_method(7) に記載されている、パーセント記号 (%) によって取り込まれるメソッドトークンを指定できます。デフォルト値は :true です。

service-name

サービスの名前。この NV ペアは必須です。

start-method

サービスが開始されるときに実行するコマンド。この値を空白にしてもかまいません。smf_method(7) に記載されている、% によって取り込まれるメソッドトークンを指定でき、リスタータによる展開用としてマニフェストに格納されます。:true を指定できます。rc-script の NV ペアが指定されていないかぎり、マニフェストにはこの NV ペアが必要です。プロファイルには必要ありません。

stop-method

サービスが停止されるときに実行するコマンド。これは、start-method と同様の値を受け入れ、さらに :kill も受け入れます。transient サービスのデフォルト値は :true、contract および child サービスのデフォルト値は :kill です。

timeout

The service will be set with a general method timeout in seconds if method specific timeout is not provided.The default timeout is 60 seconds and for periodic or scheduled services, the default value is 0 seconds which signifies no timeout for the exec method of the service.Also, method specific timeouts do not apply to periodic/scheduled services.

start-timeout

The service will be set with a timeout specified by user specifically for the start-method.

stop-timeout

The service will be set with a timeout specified by user specifically for the stop-method.

refresh-timeout

The service will be set with a timeout specified by user specifically for the refresh-method.

user

The service will run as the defined user rather than root.

Note that the user name is not validated by svcbundle(8) or required to exist on the system where svcbundle(8) is run.

group

The service will run as the defined group rather than root.

Note that the group name is not validated by svcbundle(8) or required to exist on the system where svcbundle(8) is run.

privileges

The service will run with the defined set of privileges.A privilege specification can include any of the predefined sets: basic, all and may use the extended policy specification and negation operations (to remove a privilege).See privileges(7) and smf_method(8)for details and syntax.

Note that the names of the privileges are not validated by svcbundle(8).

Periodic and Scheduled service attributes

The following attributes are used to create a periodic or scheduled service.

period

This NV pair is used to create a manifest for a periodic service.The value is used for the period, in seconds, when the start-method should run.

day

スケジュールされたサービスを作成する際の「曜日」の制約を指定します。スケジュールされたサービスに関する詳細は、svc.periodicd(8) を参照してください。

day_of_month

スケジュールされたサービスを作成する際の「月の日」の制約を指定します。

delay

サービスが online 状態に遷移してから、起動メソッドの最初の呼び出しまでの固定の秒数。

frequency

スケジュールされたサービスを作成する際の頻度を指定します。

jitter

period から起動メソッドが実行されるまでのランダムな最大秒数。使用される最後の秒数は、0 からこのプロパティーの値までの範囲です。

minute

スケジュールされたサービスを作成する際の「分」の制約を指定します。

month

スケジュールされたサービスを作成する際の「月」の制約を指定します。

hour

スケジュールされたサービスを作成する際の「時」の制約を指定します。

interval

この NV ペアは、スケジュールされたサービスのマニフェストを作成するために、start-method ペアとともに使用されます。このペアの値は、スケジュールされたサービスを実行する頻度を指定します。このペアを指定する場合は、start-method も指定する必要があります。start-method ペアの値は、scheduled_method 要素の exec 属性に使用されます。スケジュールされたサービスに関する詳細は、svc.periodicd(8) を参照してください。

timezone

スケジュールされたサービスを作成する際の「タイムゾーン」の値を指定します。

weekday_of_month

スケジュールされたサービスを作成する際の「weekday_of_month」の制約を指定します。

week_of_year

スケジュールされたサービスを作成する際の「年の週番号」の制約を指定します。

year

スケジュールされたサービスを作成する際の「年」の制約を指定します。

オプション

次のコマンド行オプションがサポートされています。

–i

生成されたファイルをインストールします。詳細は、「機能説明」を参照してください。

–o output_file

作成されるファイルの名前を指定します。

–s name=value

名前/値ペアを指定します。詳細は、「拡張機能説明」を参照してください。

–i–o も指定されていない場合、生成されたファイルは標準出力に書き出されます。

使用例 1 transient サービス用のマニフェストを作成する

次のコマンドでは、単純な transient サービス用のマニフェストを作成します。transient サービスは svcbundle のデフォルトであるため、2 つのオプションだけでマニフェストを指定できます。

# svcbundle -s service-name=site/sneezy \
-s start-method=/lib/svc/method/sneezy
使用例 2 daemon サービス用のマニフェストを作成する

次のコマンドでは、daemon サービス用のマニフェストを作成します。

# svcbundle -s service-name=site/sneezy \
-s start-method=/lib/svc/method/sneezy \
-s model=daemon
使用例 3 停止およびリフレッシュコマンドを使用して daemon サービス用のマニフェストを作成する

次のコマンドでは、停止コマンドとリフレッシュコマンドを使用して daemon サービス用のマニフェストを作成します。

# svcbundle -s service-name=site/sleepy \
-s start-method="/lib/svc/method/sleepy %m" \
-s stop-method="/lib/svc/method/sleepy %m" \
-s refresh-method="/lib/svc/method/sleepy %m" \
-s model=daemon
使用例 4 インスタンスプロパティーを使用してマニフェストを作成する

次のコマンドでは、インスタンスプロパティーを使用してマニフェストを作成します。

# svcbundle -s service-name=system/happy \
-s start-method=/lib/svc/method/happy \
-s instance-property=config:velocity:count:50 \
-s instance-property=config:color:astring:red

生成されたマニフェストは、2 つのプロパティー velocitycolor を含む config プロパティーグループを使用してサービスインスタンスを作成します。

使用例 5 予約文字を含むインスタンスプロパティーを使用してマニフェストを作成する

次のコマンドでは、インスタンスプロパティーを使用してマニフェストを作成します。

# svcbundle -s service-name=system/happy \
-s start-method=/lib/svc/method/happy \
-s instance-property=config:velocity:count:50 \
-s instance-property=config:color%20name:astring:red

生成されたマニフェストは、2 つのプロパティー velocitycolor name を含む config プロパティーグループを使用してサービスインスタンスを作成します。

使用例 6 rc スクリプト変換用のマニフェストを作成する

次のコマンドでは、rc スクリプトの変換に役立つマニフェストを作成します。この例では、rc スクリプトがマルチユーザーレベルで実行され、デーモンを起動しないものと想定します。

# svcbundle -s service-name=doc \
-s rc-script=/etc/init.d/doc:2

注意深いユーザーは、/lib/svc/share/smf_include.sh を含めるように rc スクリプトを変更します。

使用例 7 サービスプロパティーを変更するためのプロファイルを生成する

次のコマンドでは、grumpy サービスの nfsmapid_domain プロパティーを設定するためのプロファイルを生成します。

# svcbundle -s bundle-type=profile \
-s service-name=network/nfs/grumpy \
-s service-property=nfs-props:nfsmapid_domain:astring:grumpy
使用例 8 デフォルトのプロパティータイプを使用する

次のコマンドでは、デフォルトで astring になる config/color のプロパティータイプを設定します。

# svcbundle -s service-name=system/happy \
-s start-method=/lib/svc/method/happy \
-s instance-property=config:color::red
使用例 9 Installing the Manifest

次のコマンドでは、–i オプションを使用してマニフェストをインストールします。この例では、bashful はサービス名のベース名であるため、生成されたマニフェストは /lib/svc/manifest/site/bashful.xml に書き出されます。

# svcbundle -i -s service-name=application/bashful \
-s start-method=/opt/bashful/start
svcbundle: waiting for application/bashful to reach enabled state
使用例 10 Specifying user and privileges for service method

The following command creates a service that runs as a non-root user but with more than basic privileges.

# svcbundle -s service-name=site/myapp -s user=appuser \
-s privileges=basic,proc_chroot,{file_write}:/var/share/myapp*

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
確実

関連項目

svcs(1), service_bundle(5), attributes(7), smf(7), smf_method(7), smf_security(7), smf_template(7), init(8), svc.startd(8), svccfg(8), svc.periodicd(8)