4 如何恢复处于维护状态的服务
? 成为超级用户或承担包括 Service Management 权限配置文件的角色。
? 确定依赖该服务的任何进程是否已停止。
说明:通常当某个服务实例处于维护状态时,与该实例相关的所有进程均已停止。但是,您应当在继续操作之前确保这一点。以下命令将列出与某个服务实例相关的所有进程以及这些进程的 PID(进程标识符)。
# svcs -p FMRI
? 中止剩余的所有进程。
对于由 svcs 命令显示的所有进程重复上述步骤。
# pkill -9 PID
如有必要,请修复服务配置。有关错误的列表,请查看 /var/svc/log 中相应的服务日志文件。
? 恢复此服务方法:
# svcadm clear FMRI
5 如何恢复到另一个SMF 快照
如果一个服务配置有误,则可以通过恢复到上次成功启动的快照来修复问题。在以下过程中,使用的是 console-login 服务以前的快照。
? 成为超级用户或承担包括 Service Management 权限配置文件的角色。
? 运行 svccfg 命令。
# svccfg
svc:>
? 选择要修复的服务实例。
注意这里必须使用对该实例进行完全定义的 FMRI,而不允许使用快捷方式。
svc:> select system/console-login:default
svc:/system/console-login:default>
? 创建可用快照的列表。
svc:/system/console-login:default> listsnap
initial
running
start
svc:/system/console-login:default>
? 选择或恢复到 start 快照。
start 快照是上次成功启动服务时的快照。
svc:/system/console-login:default> revert start
svc:/system/console-login:default>
? 退出 svccfg。
svc:/system/console-login:default> quit
? 更新服务配置系统信息库中的信息。
该步骤用 start 快照中的配置信息更新系统信息库。
# svcadm refresh system/console-login
? 重新启动服务
# svcadm restart system/console-login
图5 是以上操作的截图。
图5恢复到另一个 SMF 快照
6 SMF中的inetd服务
SMF包含了对inetd服务管理,除了标准的svccfg, svcadm, svcs命令外,SMF还提供了inetadm和inetconv专门管理inetd服务。inetadm命令用来查看、启用/禁用、修改inetd服务,inetconv则是用来将旧的inetd服务配置转化成SMF规范的服务。常用的inetadm选项如下 :
inetadm -e fmri 启用指定的inetd服务
inetadm -d fmri 禁用指定的inetd服务
inetadm -l fmri 列出指定inetd服务的属性
inetadm -p 列出默认inetd服务的属性
如果不指定参数inetadm将列出当前系统所有的inetd服务。
? 显示由 inetd 控制的服务
使用命令:
说明:命令输出较长中间部分省略。命令列出由 inetd 控制的服务,其中包括每个服务的 FMRI、运行状态以及服务是处于启用还是禁用状态。
? 使用inetadm禁用telnet服务
这里可以使用inetadm的方法禁用telnet服务,步骤如下:
操作如图6
图6使用inetadm禁用telnet服务
第一个命令的输出表明 telnet服务在启用状态。本示例中的第二个命令禁用 telnet服务。第三个命令显示 telnet服务确实处于禁用状态。
总结:本文主要介绍了使用SMF来管理Solaris 10系统服务的监控和管理部分,后边会介绍设置SMF服务、使用脚本来管理服务和使用SMF进行调试和修复的方法。