svcbundle - SMF サービスバンドルの作成
svcbundle [-i | -o output_file] -s name=value...
svcbundle help [name]
svcbundle コマンドは、SMF マニフェストを生成するために使用されます。マニフェストは複数の –s オプションによって指定されます。マニフェストを生成するには、service-name および start-method を指定する必要があります。その他の NV ペアはオプションであり、ユーザーはこれらを使用してサービスの詳細を指定できます。svccfg(1M) は、生成されたマニフェスト上で実行されるコマンドを検証して、テンプレートの競合があれば検出します。
svcbundle を使用してプロファイルを生成することもできます。後述の bundle-type を参照してください。
2 つめの形式では、有効な名前がすべて一覧表示されるヘルプメッセージを標準出力に出力します。あるいは、help と名前を指定して、その名前に有効な値についての考察を表示することもできます。
ユーザーへの負担を軽減するために、svcbundle はマニフェストの生成時に、作業を簡素化するための仮定をいくつか設けます。これらの想定が、使用しているアプリケーションに適さない場合は、生成されたマニフェストを編集できます。
生成されたマニフェストは、マスターリスタータ svc.startd(1M) とともに使用されるよう意図されています。
サービスの開始が早くなりすぎないように、svc:/milestone/multi-user への依存関係が生成されます。これの例外については、後述の rc-script を参照してください。サービスの起動を早めるために、smf(5) で説明されている特定のサービスまたはマイルストーンのいずれかに依存するようにマニフェストを編集できます。
バンドル名は service-name で提供される値と同じになります。
すべての exec_methods のタイムアウトは 60 秒です。
–i オプションの使用により、サービスのインストール作業の大半を svcbundle に実行させることができます。生成されたマニフェストは /lib/svc/manifest/site、または /etc/svc/profile/site 内のプロファイルに自動的に保存されます。生成されたファイルの名前は –s service-name で指定されるサービス名のベース名になり、ファイルには .xml 拡張子が付けられます。警告: svcbundle はその名前を持つ既存ファイルがあれば上書きします。
次に、svcbundle は manifest-import サービスを再起動して新しく作成されたファイルを処理し、それを SMF に組み込みます。マニフェストの場合、svcbundle はサービスが最終状態 (オンライン、無効、または保守のいずれか) に入るのを待機します。この待機期間の始めに、svcbundle は次を出力します。
svcbundle: waiting for service to reach final_state state
...ここで、final_state は enabled (有効) または disabled (無効) です。このメッセージが表示されたあとは、svcbundle を中断しても安全です。
–i オプションを使用するには、これらの限定されたディレクトリにファイルを作成し、manifest-import サービスを再起動するのに十分な承認が必要であることは明らかです。smf_security(5) を参照してください。
このセクションでは、名前/値 (NV) ペアについて説明します。
生成されたバンドルは、コマンド行で複数の -s オプションを使用することによって完全に定義されます。各 NV ペアの形式は name=value であり、ここでの name と name はこのリストからのものです。
生成するサービスバンドルのタイプ。有効な値は、manifest および profile です。manifest がデフォルトです。
model の同義語。
インスタンスを有効にすべきかどうかを示します。有効な値は、true および false です。デフォルト値は true です。
サービスモデルを設定します。これは startd/duration プロパティーの値です。svc.startd(1M) を参照してください。モデルは、次のいずれかの値に設定できます。
contract
daemon — contract の同義語
child
wait — child の同義語
transient
デフォルトは transient です。
インスタンスの名前。デフォルト値は default です。
これらのオプションは、pg_name という名前のプロパティーグループをインスタンスまたはサービス内に作成するために使用され、それにはアプリケーションのタイプが割り当てられます。この PG には、prop_type タイプの 1 つの値を持つ、prop_name という名前のプロパティーが 1 つ含まれます。複数のプロパティーを持つプロパティーグループを作成するには、*-property を複数回呼び出します。ゼロまたはそれ以上の *-property= 宣言を使用できます。
プロパティータイプをデフォルトにするには、2 つの連続するコロンを使用します。後述の「使用例」を参照してください。マニフェストの場合は、astring というデフォルトのプロパティータイプが使用されます。プロファイルの場合、プロパティーは通常ほかの情報ソースから判断できるため、それを指定する必要はありません。
この NV ペアによって svcbundle は、レガシー rc スクリプトから SMF サービスへの変換を容易にするマニフェストを発行できます。script_path は rc スクリプトへのパスであり、run_level は rc スクリプトが実行されている実行レベルです (init(1M) を参照)。script_path は、exec_method の開始と停止の要素をマニフェスト内に生成するために使用されます。exec 属性は次に設定されます。
script_path %m
run_level は依存関係の生成に使用されるため、そのスクリプトはブート中の適切な時期に実行されます。
サービスがリフレッシュされるときに実行するコマンド。この値を空白にしてもかまいません。この値には、smf_method(5) に記載されている、パーセント記号 (%) によって取り込まれるメソッドトークンを指定できます。デフォルト値は :true です。
サービスの名前。この NV ペアは必須です。
サービスが開始されるときに実行するコマンド。この値を空白にしてもかまいません。smf_method(5) に記載されている、% によって取り込まれるメソッドトークンを指定でき、リスタータによる展開用としてマニフェストに格納されます。:true を指定できます。rc-script の NV ペアが指定されていないかぎり、マニフェストにはこの NV ペアが必要です。プロファイルには必要ありません。
サービスが停止されるときに実行するコマンド。これは、start-method と同様の値を受け入れ、さらに :kill も受け入れます。transient サービスのデフォルト値は :true、contract および child サービスのデフォルト値は :kill です。
この NV ペアは、定期的なサービスのマニフェストを作成するために、periodic-method ペアとともに使用されます。このペアの値は、定期的なサービスの期間として使用されます。このペアを指定する場合は、periodic-method も指定する必要があります (その逆も同様)。
この NV ペアは、定期的なサービスのマニフェストを作成するために、periodic ペアとともに使用されます。このペアの値は、各期間に実行するコマンドを指定します。このペアを指定する場合は、period も指定する必要があります (その逆も同様)。
スケジュールされたサービスを作成する際の「曜日」の制約を指定します。スケジュールされたサービスに関する詳細は、svc.periodicd(1M) を参照してください。
スケジュールされたサービスを作成する際の「月の日」の制約を指定します。
スケジュールされたサービスを作成する際の頻度を指定します。
スケジュールされたサービスを作成する際の「分」の制約を指定します。
スケジュールされたサービスを作成する際の「月」の制約を指定します。
スケジュールされたサービスを作成する際の「時」の制約を指定します。
この NV ペアは、スケジュールされたサービスのマニフェストを作成するために、start-method ペアとともに使用されます。このペアの値は、スケジュールされたサービスを実行する頻度を指定します。このペアを指定する場合は、start-method も指定する必要があります。start-method ペアの値は、scheduled_method 要素の exec 属性に使用されます。スケジュールされたサービスに関する詳細は、svc.periodicd(1M) を参照してください。
スケジュールされたサービスを作成する際の「タイムゾーン」の値を指定します。
スケジュールされたサービスを作成する際の「weekday_of_month」の制約を指定します。
スケジュールされたサービスを作成する際の「年の週番号」の制約を指定します。
スケジュールされたサービスを作成する際の「年」の制約を指定します。
次のコマンド行オプションがサポートされています。
生成されたファイルをインストールします。詳細は、「機能説明」を参照してください。
作成されるファイルの名前を指定します。
名前/値ペアを指定します。詳細は、「拡張機能説明」を参照してください。
–i も –o も指定されていない場合、生成されたファイルは標準出力に書き出されます。
次のコマンドでは、単純な 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 つのプロパティー velocity と color を含む config プロパティーグループを使用してサービスインスタンスを作成します。
使用例 5 rc スクリプト変換用のマニフェストを作成する次のコマンドでは、rc スクリプトの変換に役立つマニフェストを作成します。この例では、rc スクリプトがマルチユーザーレベルで実行され、デーモンを起動しないものと想定します。
# svcbundle -s service-name=doc \ -s rc-script=/etc/init.d/doc:2
注意深いユーザーは、/lib/svc/share/smf_include.sh を含めるように rc スクリプトを変更します。
使用例 6 サービスプロパティーを変更するためのプロファイルを生成する次のコマンドでは、grumpy サービスの nfsmapid_domain プロパティーを設定するためのプロファイルを生成します。
# svcbundle -s bundle-type=profile \ -s service-name=network/nfs/grumpy \ -s service-property=nfs-props:nfsmapid_domain:astring:grumpy使用例 7 デフォルトのプロパティータイプを使用する
次のコマンドでは、デフォルトで astring になる config/color のプロパティータイプを設定します。
# svcbundle -s service-name=system/happy \ -s start-method=/lib/svc/method/happy \ -s instance-property=config:color::red使用例 8 マニフェストをインストールする
次のコマンドでは、-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
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
svcs(1)、init(1M)、svc.startd(1M)、svccfg(1M)、svc.periodicd(1M)、service_bundle(4)、attributes(5)、smf_method(5)、smf_security(5)、smf_template(5)、smf(5)