跳过导航链接 | |
退出打印视图 | |
安装 Oracle Solaris 11 系统 Oracle Solaris 11 Information Library (简体中文) |
创建一个 SMF 清单文件,该文件用于定义执行脚本的瞬态服务。
以下服务清单示例末尾附近的 duration 属性的值为 transient。瞬态服务执行一次 start 方法,如果该方法退出并显示 $SMF_EXIT_OK,瞬态服务将不会再次执行该方法。svc.startd 守护进程在首次执行脚本后不会尝试重新启动该脚本。
服务的 start 方法执行首次引导脚本。
本示例中服务的名称为 site/first-boot-script-svc。引导客户机后,您可以在以下命令的输出中看到该服务:
$ svcs -a|grep first-boot-script STATE STIME FMRI disabled 13:51:42 svc:/site/first-boot-script-svc:default
本示例指定 multi-user 相关性以确保首次引导后首次引导脚本在启动序列中稍晚执行。根据首次引导脚本执行的操作不同,可能不需要此类相关性。如果不指定此类相关性,可能会在按脚本预期的方式配置系统之前运行脚本。
提示 - 评估脚本的相关性并构建服务,以在满足脚本的相关性之后运行脚本。
示例 13-2 SMF 服务清单样例
以下文件是 first-boot-script-svc 服务的 SMF 清单文件:first-boot-script-svc-manifest.xml。此服务在缺省情况下处于启用状态,且不会重新启动。本示例中服务运行的脚本为 /opt/site/first-boot-script.sh。
<?xml version="1.0"?> <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1"> <service_bundle type='manifest' name='first-boot-script:site-first-boot-script-svc'> <service name='site/first-boot-script-svc' type='service' version='1'> <create_default_instance enabled='true' /> <single_instance /> <!-- Run the script late in the startup sequence after first boot. --> <dependency name='multi-user' grouping='require_all' restart_on='none' type='service'> <service_fmri value='svc:/milestone/multi-user:default' /> </dependency> <exec_method type='method' name='start' exec='/opt/site/first-boot-script.sh' timeout_seconds='360'> <method_context> <method_credential user='root'/> </method_context> </exec_method> <exec_method type='method' name='stop' exec=':true' timeout_seconds='60' /> <property_group name='startd' type='framework'> <propval name='duration' type='astring' value='transient' /> </property_group> </service> </service_bundle>