サービス構成は、サービスおよびサービスインスタンスに対して設定されるプロパティーで表され、サービス構成リポジトリのレイヤーに格納されます。サービスに対して設定されたプロパティーは、そのサービスのすべてのインスタンスに継承されます。インスタンスに対して設定されたプロパティーは、そのインスタンスだけで使用されます。サービスインスタンスは、継承したプロパティーの値をカスタマイズでき、親サービスに対して定義されていない追加プロパティーを定義できます。
このセクションでは、プロパティー値を取得する方法と、値がサービスに対してグローバルか、インスタンスに固有か、ソフトウェアで提供されたものか、または管理カスタマイズであるかを識別する方法について説明します。
svccfg describe コマンドは、プロパティーの現在の値を含め、サービスのプロパティーグループおよびプロパティーの説明を表示します。オペランドを付けずに describe を実行すると、選択したサービスまたはサービスインスタンスのすべてのプロパティーグループおよびプロパティーの説明が表示されます。現在の値の説明や使用可能な値のリストなどの詳細を表示するには、-v オプションを使用します。テンプレート情報を表示するには、-t オプションを使用します。
$ svccfg -s pkg/server describe network/restart_on network/restart_on astring none Determines whether to restart the service due to a dependency refresh, restart, or failure. $ svccfg -s pkg/server describe -v network/restart_on network/restart_on astring none type: astring required: true Determines whether to restart the service due to a dependency refresh, restart, or failure. visibility: readwrite minimum number of values: 1 maximum number of values: 1 value: none value description: Never restart due to dependency refresh, restart, or failure. value constraints: value name: none value name: error value name: restart value name: refresh
このセクションの例では、サービスおよびインスタンスのプロパティーとプロパティーグループを、別々のビュー、レイヤー、およびスナップショットで表示する方法について説明します。
使用例 6 現在使用中のインスタンスおよび継承したプロパティーの一覧表示svcprop コマンドはデフォルトで、実行中のスナップショットでプロパティーに割り当てられている値を表示します。これが現在使用されている値です。デフォルトでは、svcprop コマンドは、実行中のスナップショットの合成ビューでプロパティーを表示します。つまり、インスタンス固有のプロパティーと継承されたプロパティーの両方が表示されます。継承されたプロパティーの値がインスタンスでカスタマイズされている場合、そのインスタンスで設定された値が表示されます。出力では、プロパティーごとに 1 行ずつ表示され、プロパティーグループとプロパティー名 (スラッシュで区切られます)、プロパティー値のデータタイプ、およびプロパティー値が示されます。プロパティーまたはグループ名が指定されていない場合、実行中のスナップショット内のすべてのプロパティー値が示されます。
FMRI またはパターンオペランドで完全なサービス名を指定しているが、インスタンスを指定していない場合、サービスに対してのみ設定されたプロパティーが表示されます。インスタンスに対してのみ設定されたプロパティーは表示されません。次のコマンドは、サービス依存関係、サービスのタイプ、プロファイルおよびマニフェストファイルのパスなどのプロパティーを表示します。
$ svcprop svc:/system/identity
インスタンスを指定すると、親サービスから継承され、そのインスタンスおよびプロパティーについてカスタマイズされたプロパティーの合成ビューが表示されます。次のコマンドは、親サービスおよびプロパティーからこのインスタンスに継承されたプロパティーを含め、指定されたインスタンスの実行中のスナップショット内のプロパティーをすべて一覧表示します。継承されたプロパティーの値がこのインスタンスに対してカスタマイズされている場合は、カスタマイズされた値が表示されます。この例では、追加の依存関係、このインスタンスを起動する実行可能ファイルへのパス、このインスタンスのログファイルへのパス、このインスタンスの状態に関する情報などのプロパティーを表示します。
$ svcprop svc:/system/identity:domain使用例 7 現在使用されている指定のプロパティーまたはプロパティーグループの一覧表示
特定のプロパティーグループ内の特定のプロパティーまたはすべてのプロパティーを表示するには、-p オプションを使用します。
$ svcprop -p pkg/port pkg/server svc:/application/pkg/server:oss:properties/pkg/port count 82 svc:/application/pkg/server:s11:properties/pkg/port count 81 svc:/application/pkg/server:default:properties/pkg/port count 80 $ svcprop -p pkg pkg/server:s11 pkg/inst_root astring /export/ipsrepos/Solaris11 pkg/port count 81 ... pkg/ssl_cert_file astring "" pkg/ssl_key_file astring "" ...使用例 8 編集ビューでのサービスおよびインスタンス値の一覧表示
オプションを付けて svcprop コマンドを実行すると、実行中のスナップショットの代わりに、編集ビューを表示できます。編集ビューには最新の変更が表示されます。編集ビューでの変更は、インスタンスのリフレッシュまたは再起動によって、実行中のスナップショットにコミットされている場合も、コミットされていない場合もあります。次のコマンドは、実行中のスナップショットと編集ビューとの違いを示します。oss インスタンスと s11 インスタンスは作成されたばかりであり、プロパティー値は変更されていますが、インスタンスはまだリフレッシュされていません。
次のコマンドは、実行中のスナップショットの合成ビューを表示します。これらのインスタンスがカスタマイズされてからリフレッシュされていないので、表示される値は pkg/server サービスの値になります。
$ svcprop -p pkg/port pkg/server svc:/application/pkg/server:oss/:properties/pkg/port count 80 svc:/application/pkg/server:s11/:properties/pkg/port count 80 svc:/application/pkg/server:default/:properties/pkg/port count 80
-c オプションは、編集値の合成ビューを表示します。
$ svcprop -c -p pkg/port pkg/server svc:/application/pkg/server:oss/:properties/pkg/port count 82 svc:/application/pkg/server:s11/:properties/pkg/port count 81 svc:/application/pkg/server/:properties/pkg/port count 80
-C オプションは、合成せずに編集値を表示します。これは合成ビューではないので、カスタマイズされていないインスタンスの値はありません。
$ svcprop -C -p pkg/port pkg/server svc:/application/pkg/server:oss/:properties/pkg/port count 82 svc:/application/pkg/server:s11/:properties/pkg/port count 81 svcprop: Couldn't find property 'pkg/port' for instance 'svc:/application/pkg/server:default'.
svccfg コマンドはデフォルトで、実行中のスナップショットの値ではなく、編集中のプロパティー値を表示します。指定のスナップショットでの値の表示で説明しているように selectsnap サブコマンドを使用することによって、svccfg で、実行中のスナップショットの値を強制的に表示させることができます。
svccfg コマンドは、親サービスを指定した場合は親サービスの値だけを、インスタンスを指定した場合はインスタンスの値だけを表示します。svccfg listprop コマンドの出力がない場合は、指定したプロパティーが、指定した親サービスまたはインスタンスに対して設定されていない可能性があります。プロパティーが削除された場合は、構成カスタマイズの表示で説明しているように、listcust -M を使用して、マスクされた値を表示します。
次のコマンドは、プロパティーグループまたはプロパティー名が指定されていないので、指定されたサービスの編集中のプロパティー値をすべて一覧表示します。svcprop svc:/system/identity コマンドによって表示された出力に加え、この出力には、プロパティーグループの名前およびタイプとテンプレートデータが含まれます。
$ svccfg -s svc:/system/identity listprop
次のコマンドは、指定したサービスインスタンスの編集中のプロパティー値をすべて一覧表示します。このコマンドは合成ビューを表示しないので、この出力には、プロファイルファイルおよびマニフェストファイルへのパスなどは表示されません。
$ svccfg -s svc:/system/identity:domain listprop使用例 9 編集ビューでの指定のプロパティーまたはプロパティーグループの一覧表示
次のコマンドは、指定したサービスインスタンスの指定したプロパティーグループでの編集中のプロパティー値をすべて一覧表示します。-o オプションを使用すると、表示する列を選択できます。有効な列の名前のリストについては、svccfg(1M) のマニュアルページを参照してください。
$ svccfg -s pkg/server:s11 listprop pkg pkg application pkg/inst_root astring /export/ipsrepos/Solaris11 pkg/port count 81 $ svccfg -s pkg/server:s11 listprop -o propname,value pkg inst_root /export/ipsrepos/Solaris11 port 81
プロパティー名またはプロパティーグループ名でプロパティー値を表示するだけでなく、プロパティーグループタイプでプロパティー値を表示することもできます。
使用例 10 プロパティーグループとそのタイプの表示svccfg コマンドの listpg サブコマンドは、各プロパティーグループの名前とタイプを表示します。
$ svccfg -s pkg/server listpg pkg application pkg_bui application pkg_secure application fs dependency autofs dependency ntp dependency network dependency general framework manifestfiles framework start method stop method tm_common_name template $ svccfg -s pkg/server:s11 listpg pkg application general framework restarter framework NONPERSISTENT
非永続プロパティーグループは通常、アクティブなプログラム状態を保持します。非永続プロパティーグループ内のプロパティーの値は、システムブート中にクリアされます。
プロパティーグループ名を指定すると、そのプロパティーグループのタイプだけが表示されます。
$ svccfg -s pkg/mirror listpg config config application使用例 11 プロパティーグループタイプのプロパティーの一覧表示
-g オプションを付けて svcprop コマンドを実行すると、特定のプロパティーグループタイプのプロパティーが表示されます。
$ svcprop -g com.sun,fw_configuration smtp firewall_config/apply_to astring "" firewall_config/exceptions astring "" firewall_config/policy astring use_global firewall_config/value_authorization astring solaris.smf.value.firewall.config
複数の -g オプションが指定されると、指定されたすべてのタイプのプロパティーグループのプロパティーが表示されます。
$ svcprop -g application -g com.sun,fw_configuration smtp config/include_info boolean false config/local_only boolean true config/path_to_sendmail_mc astring "" config/value_authorization astring solaris.smf.value.sendmail firewall_config/apply_to astring "" firewall_config/exceptions astring "" firewall_config/policy astring use_global firewall_config/value_authorization astring solaris.smf.value.firewall.config
-p および -g の両方のオプションを使用する場合、-p オプション値でプロパティーグループの名前を指定しないでください。
$ svcprop -g plugin -p path auditd audit_binfile/path astring audit_binfile.so audit_syslog/path astring audit_syslog.so audit_remote/path astring audit_remote.so
サービス構成リポジトリは、データのソースに応じて、レイヤーにプロパティーデータを格納します。svcprop と svccfg のどちらのコマンドでも、プロパティー値のソースであるレイヤーを表示できます。svcprop コマンドおよび svccfg コマンドの -l オプションには、情報を表示するレイヤーを指定する引数が必要です。引数値は、manifest、system-profile、site-profile、および admin です。出力には、特定のプロパティー値の設定がサービスマニフェストで行われたか、プロファイルで行われたか、管理者またはアプリケーションによって行われたかが示されます。レイヤーについては、リポジトリレイヤーを参照してください。キーワード all は、すべてのレイヤーを表す別名です。指定したレイヤーが必要なプロパティー値のソースでない場合、出力は表示されません。
次のコマンドは、プロパティー値の一部がサービスマニフェストからのものであり、一部は管理者が設定したものであることを示します。プロパティーの一部は複数のレイヤーに値があります。pkg/readonly プロパティーは、サービスマニフェストに値が設定されており、管理者もその同じ値を設定します。別々のレイヤーの値は異なる可能性があります。
$ svcprop -l all -p pkg pkg/server:s11 pkg/port count admin 81 pkg/inst_root astring admin /export/ipsrepos/Solaris11 pkg/address net_address manifest pkg/cfg_file astring manifest "" ... pkg/readonly boolean manifest true pkg/readonly boolean admin true ...
svccfg listprop コマンドの -l オプションは、引数 current を取ることもできます。current を -l の引数として使用すると、-l オプションを使用しない場合に表示されるものと同じプロパティー値が表示されます。出力における唯一の違いは、レイヤーの名前も表示される点です。サービス構成リポジトリは非永続データのレイヤー情報を格納しないので、非永続データはレイヤー名を表示しません (3 番目の列には <none> と表示されます)。非永続プロパティーグループには通常、アクティブなプログラム状態が保持され、非永続プロパティーグループ内のプロパティーの値はシステムブート中にクリアされます。
$ svccfg -s pkg/server:s11 listprop -l current pkg application admin pkg/inst_root astring admin /export/ipsrepos/Solaris11 pkg/port count admin 81 general framework admin general/complete astring manifest general/enabled boolean admin true restarter framework <none> NONPERSISTENT restarter/logfile astring <none> /var/svc/log/application-pkg-server:default.log restarter/contract count <none> 121 restarter/start_pid count <none> 1055 restarter/start_method_timestamp time <none> 1379605275.329096000 restarter/start_method_waitstatus integer <none> 0 restarter/auxiliary_state astring <none> dependencies_satisfied restarter/next_state astring <none> none restarter/state astring <none> online restarter/state_timestamp time <none> 1379605275.332259000
次のコマンドは、localtime プロパティーがサービスマニフェストでは UTC に設定され、/etc/svc/profile/site ディレクトリのプロファイルでは US/Pacific に設定されていることを示します。site-profile レイヤーで設定された値は admin 構成であり、manifest レイヤーで設定された値をオーバーライドします。
$ svcprop -l all -p timezone/localtime system/timezone:default timezone/localtime astring manifest UTC timezone/localtime astring admin US/Pacific $ svccfg -s system/timezone:default listprop -l all -o propname,layer,value \ > timezone/localtime localtime admin US/Pacific localtime manifest UTC
svccfg listprop コマンドの -f オプションまたは -o file オプションのいずれかを使用して、構成に関係したファイルの名前を表示します。
$ svccfg -s system/timezone:default listprop -l all -f timezone/localtime localtime - US/Pacific localtime /lib/svc/manifest/system/timezone.xml UTC $ svccfg -s system/timezone:default listprop -l all -o propname,value,file \ > timezone/localtime localtime US/Pacific - localtime UTC /lib/svc/manifest/system/timezone.xml
次のコマンドは、このサービスインスタンスで利用できるスナップショットを一覧表示します。svcprop または svccfg のどちらかでこれらのスナップショット名を使用すると、そのスナップショットで設定されたプロパティーの値が表示されます。スナップショットはインスタンスだけにあります。サービスにはスナップショットはありません。サービス構成リポジトリのスナップショットの詳細は、リポジトリのスナップショットを参照してください。
$ svccfg -s pkg/server:default listsnap initial previous running start $ svccfg -s pkg/server:s11 listsnap previous running start
次のコマンドは、pkg/inst_root プロパティーの値が以前のスナップショットで異なっていたことを示します。
$ svcprop -s previous -p pkg/inst_root pkg/server:s11 /var/share/pkg/repositories/solaris $ svccfg -s pkg/server:s11 svc:/application/pkg/server:s11> selectsnap previous [previous]svc:/application/pkg/server:s11> listprop pkg/inst_root pkg/inst_root astring /var/share/pkg/repositories/solaris [previous]svc:/application/pkg/server:s11> exit
svccfg listcust コマンドは、指定されたサービスの admin レイヤーでのカスタマイズを表示します。site-profile レイヤーでのカスタマイズも表示するには、-L オプションを使用します。
次のコマンドは、pkg/server:solaris サービスの admin レイヤーでのすべてのカスタマイズを示しています。
$ svccfg -s pkg/server:solaris listcust general framework admin general/complete astring admin general/enabled boolean admin true pkg application admin pkg/inst_root astring admin /export/pkgrepos/solaris pkg/port count admin 83 pkg/readonly boolean admin true pkg/standalone boolean admin false
次のコマンドは、プロパティー config/nodename の定義は manifest レイヤーで指定されているが、値 solaris は admin レイヤーで設定されていることを示しています。
$ svccfg -s identity:node listprop -l all -o propname,layer,value config/nodename nodename admin solaris nodename manifest
次のコマンドは、identity:node サービスの admin レイヤーのカスタマイズのみ示します。
$ svccfg -s identity:node listcust config/loopback astring admin solaris
次のコマンドは、identity:node サービスのすべてのカスタマイズを示しています。
$ svccfg -s identity:node listcust -L config application node-profile config/loopback astring admin solaris config/nodename astring admin solaris general framework site-profile general/enabled boolean site-profile true
svccfg listcust コマンドは、すべてのマスクされたエンティティーも表示します。マスクされたエンティティーだけを表示するには、-M オプションを使用します。svccfg delcust コマンドを使用する前に、svccfg listcust コマンドを使用して、削除される対象を検証します。マスクされたエンティティーの詳細は、プロパティーグループ、プロパティー、およびプロパティー値の削除とsmf(5)のマニュアルページを参照してください。