跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中管理服务和故障 Oracle Solaris 11.1 Information Library (简体中文) |
下列任务说明如何配置 SMF 服务。特别是,如何修改服务或服务实例的服务属性及其他配置信息。
以下任务列表说明了配置 SMF 服务所需的过程。
|
此过程说明如何修改用于标识可以启动服务的用户的属性。
首先,指定 FMRI 来标识适当服务。然后,指定将启动该服务的 UID。
# svccfg -s FMRI svc:/service: setprop start/user = astring: newlogin
# svcadm refresh FMRI
以下过程说明如何方便地修改多个服务属性,而不必像 setprop 子命令要求的那样键入许多信息。在此示例中,更改了几个 DNS 服务属性。
editprop 子命令会将指定服务的属性组和属性收集到临时文件中,并调用由 VISUAL 或 EDITOR 环境变量指定的程序来编辑该临时文件。有关更多信息,请参见 svccfg(1M) 手册页。
# svccfg -s network/dns/client editprop ## ## The value used to construct the "nameserver" directive in resolv.conf(4). ## setprop config/nameserver = net_address: (192.168.1.10 192.168.1.11) ## ## The value used to construct the "search" directive in resolv.conf(4). ## # setprop config/search = astring: "example.com sales.example.com"
此时不保存文件。
对文件底部的刷新行取消注释,以在保存文件和退出编辑器后,应用这些更改。
## Uncomment to apply these changes to all instances of this service. refresh
以下过程显示如何更改不是由 inetd 服务管理的服务的配置。
许多服务都有一个或多个用来定义启动或其他配置信息的配置文件。这些文件可以在服务正在运行时进行更改。只有当服务已经启动后,才能检查这些文件的内容。
# svcadm restart FMRI
示例 2-15 添加新 NTP 服务器
要添加一个新的 NTP 服务器来支持您的 NTP 客户机,请向 /etc/inet/ntp.conf 文件添加一个对应于该服务器的新条目。然后,重新启动 NTP 服务。此示例显示 ntp.conf 文件的外观以及如何重新启动该服务。
# cat /etc/inet/ntp.conf . . server ntpserver1.example.com server ntpserver2.example.com # svcadm restart svc:/network/ntp:default
以下过程显示如何修改 cron 环境变量以帮助进行调试。
# svcs system/cron STATE STIME FMRI online Dec_04 svc:/system/cron:default
在本示例中,设置的是 UMEM_DEBUG 和 LD_PRELOAD 环境变量。有关 setenv 子命令的信息,请参阅 svccfg(1M) 手册页。
# svccfg -s system/cron:default setenv UMEM_DEBUG default # svccfg -s system/cron:default setenv LD_PRELOAD libumem.so
# svcadm refresh system/cron # svcadm restart system/cron
# pargs -e `pgrep -f /usr/sbin/cron` 100657: /usr/sbin/cron envp[0]: LOGNAME=root envp[1]: LD_PRELOAD=libumem.so envp[2]: PATH=/usr/sbin:/usr/bin envp[3]: SMF_FMRI=svc:/system/cron:default envp[4]: SMF_METHOD=/lib/svc/method/svc-cron envp[5]: SMF_RESTARTER=svc:/system/svc/restarter:default envp[6]: TZ=GB envp[7]: UMEM_DEBUG=default
以下命令显示由 FMRI 标识的服务的所有属性。
# inetadm -l FMRI
由 inetd 控制的服务的每个属性都由属性名和指定的值来定义。提供属性名而不指定值会将属性重置为缺省值。有关服务属性的具体信息应包含在与该服务相关的手册页中。
# inetadm -m FMRI property-name=value
再次列出属性以确保已进行相应的更改。
# inetadm -l FMRI
确认属性更改达到了所需的效果。
示例 2-16 更改 telnet 的 tcp_trace 属性
以下示例显示如何将 telnet 的 tcp_trace 属性设置为 true。在运行 telnet 命令之后,检查 syslog 的输出,此时会发现所做的更改已经生效。
# inetadm -l svc:/network/telnet:default SCOPE NAME=VALUE name="telnet" . . default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE # inetadm -m svc:/network/telnet:default tcp_trace=TRUE # inetadm -l svc:/network/telnet:default SCOPE NAME=VALUE name="telnet" . . default inherit_env=TRUE tcp_trace=TRUE default tcp_wrappers=FALSE # telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. login: root Password: . . . Last login: Mon Jun 21 05:55:45 on console Sun Microsystems Inc. SunOS 5.10 s10_57 May 2004 # ^D Connection to localhost closed by foreign host. # tail -1 /var/adm/messages Jun 21 06:04:57 yellow-19 inetd[100308]: [ID 317013 daemon.notice] telnet[100625] from 127.0.0.1 32802
可以从属性、属性组和服务实例中删除定制信息。
此命令删除选定服务在 admin 层的所有更改。
% /usr/sbin/svccfg -s FMRI delcust
示例 2-17 从属性中删除定制信息
此示例说明了从服务中删除定制信息的影响。首先应用定制信息,将 rmtmpfiles 服务中的 clean_vartmp 属性设置为在引导过程中对 /var/tmp 进行清理。作为特权用户类型,键入以下命令:
# svccfg -s svc:/system/rmtmpfiles setprop options/clean_vartmp = true # svcadm refresh svc:/system/rmtmpfiles
下一步验证属性已经更改:
$ svcprop -p options/clean_vartmp svc:/system/rmtmpfiles true
要查看定制信息,请键入以下命令:
$ svccfg -s svc:/system/rmtmpfiles listcust options/clean_vartmp boolean admin true $ svcprop -p options/clean_vartmp -l all svc:/system/rmtmpfiles options/clean_vartmp boolean manifest false options/clean_vartmp boolean admin true
要删除定制信息,请作为特权用户键入以下命令:
# svccfg -s svc:/system/rmtmpfiles delcust options/clean_vartmp Deleting customizations for property: options/clean_vartmp
此时,当运行命令来查看定制信息时,您将看到:
$ svccfg -s svc:/system/rmtmpfiles listcust $ svcprop -p options/clean_vartmp -l all svc:/system/rmtmpfiles options/clean_vartmp boolean manifest false
以下命令显示由 FMRI 标识的服务的所有属性。添加 grep 命令会将输出限制在该服务的 exec 属性。
# inetadm -l FMRI|grep exec
具有 exec 属性的 command-syntax 集定义在启动服务时运行的命令字符串。
# inetadm -m FMRI exec="command-syntax"
再次列出属性以确保已进行相应的更改。
# inetadm -l FMRI
以下过程将 inetd.conf 项转换为 SMF 服务清单。无论何时向系统添加依赖 inetd 的第三方应用程序,都需要运行此过程。如果您需要更改 /etc/inetd.conf 中项的配置,也需要运行此过程。
inetconv 命令将选定文件中的每个项都转换为服务清单。
# inetconv -i filename
示例 2-18 将 /etc/inet/inetd.conf 项转换为 SMF 服务清单
# inetconv -i /etc/inet/inetd.conf