使用 svcbundle 命令生成的服务清单可能无需进行任何修改即可满足您的需要。以下示例显示了对服务清单的修改。
如果修改了服务清单,请使用 svccfg validate 命令确保清单仍然有效。
示例 13-4 定制服务清单:延长允许脚本运行的时间在生成的服务清单的以下副本中,已增大了 start 方法的缺省 exec_method 超时值(60 秒)。请确保 start 方法有足够的时间运行首次引导脚本。
<?xml version="1.0" ?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <!-- Manifest created by svcbundle (2014-Jan-14 16:39:30-0700) --> <service_bundle type="manifest" name="site/first-boot-script-svc"> <service version="1" type="service" name="site/first-boot-script-svc"> <!-- The following dependency keeps us from starting until the multi-user milestone is reached. --> <dependency restart_on="none" type="service" name="multi_user_dependency" grouping="require_all"> <service_fmri value="svc:/milestone/multi-user"/> </dependency> <!-- Make sure the start method has adequate time to run the script. --> <exec_method timeout_seconds="360" type="method" name="start" exec="/opt/site/first-boot-script.sh"/> <!-- The exec attribute below can be changed to a command that SMF should execute to stop the service. See smf_method(5) for more details. --> <exec_method timeout_seconds="60" type="method" name="stop" exec=":true"/> <!-- The exec attribute below can be changed to a command that SMF should execute when the service is refreshed. Services are typically refreshed when their properties are changed in the SMF repository. See smf_method(5) for more details. It is common to retain the value of :true which means that SMF will take no action when the service is refreshed. Alternatively, you may wish to provide a method to reread the SMF repository and act on any configuration changes. --> <exec_method timeout_seconds="60" type="method" name="refresh" exec=":true"/> <property_group type="framework" name="startd"> <propval type="astring" name="duration" value="transient"/> </property_group> <instance enabled="true" name="default"> <property_group type="application" name="config"> <propval type="boolean" name="completed" value="false"/> </property_group> </instance> <template> <common_name> <loctext xml:lang="C"> <!-- Replace this comment with a short name for the service. --> </loctext> </common_name> <description> <loctext xml:lang="C"> <!-- Replace this comment with a brief description of the service --> </loctext> </description> </template> </service> </service_bundle>
$ svccfg validate first-boot-script-svc-manifest.xml示例 13-5 定制服务清单:确保脚本在安装非全局区域之后运行
在以下服务清单摘录中,svc:/milestone/multi-user 上的依赖性已更改为 svc:/system/zones-install 上的依赖性,以确保首次引导脚本在安装所有非全局区域之后运行。
<!-- The following dependency keeps us from starting until all non-global zones are installed. --> <dependency restart_on="none" type="service" name="ngz_dependency" grouping="require_all"> <service_fmri value="svc:/system/zones-install"/> </dependency>