Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2470877
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类:

2006-08-02 17:19:26

 

 

本章提供有关服务管理工具(ServiceManagementFacility,SMF)的概述,以及与运行级有关的信息。以下是本章中概述信息的列表:

  SMF简介

  SMF概念

  SMF管理接口和编程接口

  SMF组件

  SMF兼容性

  运行级

  /etc/inittab文件

  运行控制脚本

 

有关与SMF相关的过程的信息,请参见 管理SMF服务(任务图)。有关与运行级相关的过程的信息,请参见使用运行控制脚本(任务图)

SMF 简介

SMF提供了在传统UNIX启动脚本、init运行级和配置文件的基础上进行扩充的基础结构。SMF提供下列功能:

  自动按照相关性顺序重新启动失败的服务,无论服务失败的原因是管理员操作错误、软件错误还是无法纠正的硬件错误。相关性顺序由相关性语句定义。

可以使用新的svcs命令创建可查看的服务对象,用svcadmsvccfg命令创建可管理的服务对象。还可以使用svcs-p查看服务和进程之间的关系,这对于SMF服务和传统的init.d脚本均适用。

  通过自动捕获服务配置的快照来简化对服务的备份、恢复及撤消更改操作。

使用svcs-x来解释服务没有运行的原因,这便于调试和询问有关服务的问题。此外,由于每个服务都有单独的持久性日志文件,因此该过程进一步得到了简化。

允许使用svcadm来启用和禁用服务。这些更改不会因升级或重新启动而失效。如果使用-t选项,则所做的更改将是临时更改。

  管理员能够安全地将任务委托给非超级用户,这些任务包括在系统中修改属性以及启用、禁用或重新启动服务等任务。

  依据服务的相关性并行启动服务,从而提高大型系统的引导速度。关机时过程相反。

可以对引导控制台输出进行自定义,尽可能采用静默方式(缺省设置);或使用boot-mverbose将其自定义为详细模式。

尽可能兼容现有的管理习惯。例如,多数客户和ISV(独立软件开发商)提供的rc脚本仍可像往常一样工作。

 

相关性语句定义服务之间的关系。使用这些关系,可以只重新启动那些在缺省情况下直接受到影响的服务(而不是重新启动所有的服务),从而提供精确的故障隔离。相关性语句的另一个优点是,允许针对可伸缩和可再现的初始化进程使用相关性语句。另外,通过定义所有的相关性,可以利用新式高度并行的机器,因为所有的相关性服务都可以并行启动。

SMF定义了一组可以由管理员针对服务调用的操作。这些操作包括启用、禁用、刷新、重新启动和维护。每个服务都由执行管理操作的服务重新启动器来管理。通常,重新启动器通过执行服务的方法来执行操作。每个服务的方法都在服务配置系统信息库中定义。这些方法允许重新启动器更改服务的状态。

在每个服务成功启动时,服务配置系统信息库将按服务提供快照,这使回退成为可能。另外,系统信息库提供一致而持久的方法来启用或禁用服务,并提供一致的服务状态视图。此功能有助于调试服务配置问题。

使用SMF时的行为更改

SMF提供的多数功能都发生在后台,因此不为用户所知。其他功能可由新命令访问。以下列出了最明显的行为更改。

现在引导过程创建的消息要少许多。缺省情况下,在启动服务时并不显示消息。由引导消息提供的所有信息现在可在每个服务的日志文件(位于/var/svc/log)中找到。可以使用svcs命令来帮助诊断引导问题。另外,还可以使用boot命令的-v选项。当在引导过程中启动每个服务时,该命令会生成一条消息。

如果有可能,服务将会自动重新启动,因此似乎进程拒绝中止。如果服务有缺陷,则该服务将被置于维护模式,但通常服务会在进程中止之后重新启动。应当使用svcadm命令来禁用任何不应运行的SMF服务。

/etc/init.d/etc/rc*.d中的许多脚本已经被删除。这些脚本将不再是启用或禁用服务所必需的脚本。/etc/inittab中的项也已经过删除,以便可以使用SMF对服务进行管理。由ISV提供或在本地开发的脚本和inittab项将能够继续运行。在引导过程中,不同的服务不会恰好同时启动,但是它们不会在SMF服务之前启动,因此所有的服务相关性都应当没有问题。

 

SMF 概念

本节提供SMF框架中的术语及其定义。这些术语应用于整个文档。要理解SMF概念,必须先了解这些术语。

SMF 服务

SMF框架中的基本管理单元是服务实例。每个SMF服务都有可能配置了多个版本。而且,同一版本的多个实例也可以在一个Solaris系统上运行。实例是指服务的特定配置。Web服务器就是一种服务。配置为在端口80侦听的特定Web服务器守护进程就是一个实例Web服务器服务的每个实例都可以有不同的配置要求。服务具有系统范围的配置要求,但是,每个实例都可以根据需要覆盖特定的要求。单个服务的多个实例可作为服务对象的子对象进行管理。

服务不只表示长期运行的标准系统服务(如in.dhcpdnfsd),还表示包括ISV应用程序(如Oracle软件)的各种系统实体。此外,服务还可能包括如下所示的较不传统的实体:

■ 物理网络设备

配置的IP地址

    内核配置信息

 

与系统init状态相对应的里程碑,如多用户运行级

 

通常,服务是一个向应用程序和其他服务(本地和远程)提供一系列功能的实体。服务依赖于隐式声明的本地服务列表。

里程碑是特殊类型的服务。里程碑服务表示系统的高级属性。例如,构成运行级S23的服务均由里程碑服务表示。

服务标识符

使用故障管理资源标识符(Fault Management Resource Identier,FMRI)对每个服务实例进行命名。FMRI包括服务名称和实例名称。例如,rlogin服务的FMRIsvc:/network/login:rlogin,其中network/login标识服务,rlogin标识服务实例。

FMRI的等效格式如下所示:

svc://localhost/system/system-log:default

svc:/system/system-log:default

system/system-log:default

 

另外一些SMF命令可以使用此FMRI格式svc:/system/system-log。一些命令将推断要使用哪个实例,以及何时没有多义性。有关选择适当的FMRI格式的说明,请参见SMF命令手册页,如svcadm(1M)svcs(1)

服务名称中通常包括一个常规的功能类别。这些类别包括:

■application

device
milestone

network

platform
site

system

 

传统的init.d脚本也使用以lrc(而不是svc)开头的FMRI进行表示,例如:lrc:/etc/rcS_d/S35cacheos_sh。可使用SMF对传统服务进行监视。但是,您无法管理这些服务。

首次使用SMF引导系统时,列在/etc/inetd.conf中的服务会自动转换为SMF服务。这些服务的FMRI稍有不同。已转换的inetd服务的语法如下所示:

network//

另外,使用RPC(远程过程调用)协议的已转换服务的语法如下所示:

network/rpc-/rpc_

其中是在/etc/inetd.conf中定义的名称是服务的协议。例如rpc.cmsd服务的FMRInetwork/rpc-100068_2-5/rpc_udp

服务状态

svcs命令显示服务实例的状态、开始时间和FMRI。每个服务的状态都为下列状态之一:

degraded-服务实例处于启用状态,但是以有限的功能运行。

disabled-服务实例处于禁用状态且尚未运行。

legacy_run-传统服务不由SMF进行管理,但是可查看服务。此状态只能由传统服务使用。

maintenance-服务实例遇到错误,必须由管理员解决。

offline-服务实例处于启用状态,但是尚未运行或者无法运行。

online-服务实例处于启用状态,并且已成功启动。

uninitialized-此状态是所有服务在配置经过读取之前的初始状态。

 

SMF 清单

SMF清单是一个XML文件,其中包含与服务或服务实例相关的一整套属性。这些文件存储在/var/svc/manifest中。不应当使用清单来修改服务的属性。服务配置系统信息库是配置信息的授权来源。要将清单中的信息引入到系统信息库中,必须运行svccfg import或者允许服务在系统引导过程中导入信息。

有关SMF清单内容的完整说明,请参见service_bundle(4)手册页。

SMF 配置文件

SMF配置文件是一个XML文件,其中列出了在系统引导时启用的一组服务实例。配置文件存储在/var/svc/profile中。下面是所包括的一些配置文件:

generic_open.xml-此配置文件可启用在早期Solaris发行版中缺省启用的大多数标准Internet服务。这是缺省配置文件。

generic_limited_net.xml-此配置文件禁用许多标准Internet服务。启动了sshd服务和NFS服务,但是其余的多数Internet服务处于禁用状态。

 

有关使用配置文件的更多信息,请参见 如何使用其他SMF配置文件

服务配置系统信息库

服务配置系统信息库存储服务的持久性配置信息以及SMF运行时数据。系统信息库在本地内存和本地文件之间分布。SMF的设计旨在最终可以用网络目录服务表示服务数据。网络目录服务尚不可用。服务配置系统信息库中的数据可实现许多Solaris实例之间的配置信息共享和管理简化。服务配置系统信息库只能使用SMF界面进行处理和查询。有关处理和访问系统信息库的更多信息,请参见svccfg(1M)svcprop(1)手册页。在svc.configd(1M)手册页中介绍服务配置系统信息库守护进程。在libscf(3LIB)手册页中对服务配置库进行了说明。

SMF 系统信息库备份

SMF自动对系统信息库执行下列备份操作:

■在每次系统启动过程中,在即将对系统信息库进行首次更改之前,会执行引导备份。

svc:/system/manifest-import:default完成之后,如果manifest_import备份导入了任何新的清单,或者运行了任何升级脚本,则将发生此备份。

 

系统将为上述两种类型各维护四个备份。系统会在必要时删除最旧的备份。备份存储为/etc/svc/repository-type-YYYYMMDD_HHMMSWS,其中YYYYMMDD(年、月和日)和HHMMSS(小时、分钟和秒)是执行备份的日期和时间。请注意,小时格式基于24小时制。

在发生错误时,可以从这些备份中恢复系统信息库。为此,可使用/lib/svc/bin/restore_repository命令。有关更多信息,请参见如何修复已损坏的系统信息库

SMF 快照

服务配置系统信息库中的数据包括快照以及可编辑的配置。每个服务实例的相关数据都存储在快照中。标准快照如下所示:

initial-在首次导入清单时提取

running-在执行服务的方法时使用

start-在最后一次成功启动时提取

 

始终使用running快照执行SMF服务。如果此快照不存在,系统将自动创建。

Svcadm refresh命令(有时后跟svcadm restart命令)能够激活快照。svccfg命令用于查看或恢复到以前快照中的实例配置。

SMF 管理接口和编程接口

本节介绍在使用SMF时可用的接口。

SMF 命令行管理实用程序

SMF提供一组与SMF交互,并完成标准管理任务的命令行实用程序。下列实用程序可用来管理SMF

141服务管理工具实用程序

命令名称

功能

inetadm

提供观察或配置由inetd控制的服务的功能

svcadm

提供执行常见服务管理任务(如启用、禁用或重新启动服务实例)的

 

功能

svccfg

提供显示和处理服务配置系统信息库内容的功能

svcprop

从服务配置系统信息库中检索属性值,并采用适用于shell脚本的输

 

出格式

svcs

提供服务配置系统信息库中所有服务实例的服务状态的详细视图

 

服务管理配置库接口                                                                         

SMF提供一组编程接口,这些接口可用于通过svc.configd守护进程与服务配置系统信息库进行交互。此守护进程是对本地和远程系统信息库数据库的所有请求的仲裁程序。系统将一组基本接口定义为与服务配置系统信息库中的服务进行最低级别的交互。这些接口提供对所有服务配置系统信息库功能(如事务和快照)的访问。

对于许多开发者来说,只需要一组常见的任务即可与SMF交互。这些任务在基本服务的基础上作为易于使用的功能来实现,从而减轻了实现的难度。

SMF 组件

SMF包括一个主重新启动器守护进程和多个委托的重新启动器。

SMF 主重新启动器守护进程

svc.startd守护进程SolarisOS的主进程启动器和重新启动器。该守护进程负责管理整个系统的服务相关性。该守护进程接管了init以前的职责,即在适当的运行级启动相应的/etc/rc*.d脚本。首先,svc.startd检索服务配置系统信息库中的信息。接着,该守护进程在服务的相关性得以满足时启动服务。该守护进程还负责重新启动失败的服务,并负责关闭不再满足相关性的服务。该守护进程通过事件(如进程停止),借助于操作系统的可用性视图来跟踪服务状态。

SMF 委托的重新启动器

有些服务在启动时具有一组共同的行为。为了提供这些服务之间的共同性,委托的重新启动器可能会负责这些服务。另外,委托的重新启动器可用来提供更复杂的或特定于应用程序的重新启动行为。委托的重新启动器可以支持一组不同的方法,但是会将相同的服务状态作为主重新启动器导出。重新启动器的名称随服务一同存储。委托的重新启动器的最新示例是inetd,它能够按需启动Internet服务,而不是使服务始终保持运行。

SMF 和引导

SMF提供用来引导系统的新方法。例如:

有另外一个与all里程碑相关联的系统状态。此里程碑不同于多用户init状态,因为SMF只能识别定义的服务。如果您添加了服务(如第三方产品),那么,除非您使用下面的命令,否则它们可能不会自动重新启动:

ok boot -m milestone=all

如果使用某个里程碑引导系统,一定要同时使用-s选项。如果未包括-s,则系统将停留在引导系统时所处的里程碑状态。通过按Ctrl-D,系统将不会自动进入多用户状态。可以使用以下命令进入多用户状态:

# svcadm milestone all

在引导系统时,可以选择使用verbose选项来查看更多的消息。缺省情况下,系统将不显示这些消息。要在详细模式下引导,请使用以下命令:

ok boot -mverbose

SMF 兼容性

尽管现在许多标准的Solaris服务由SMF来管理,位于/etc/rc*.d中的脚本仍能继续在运行级转换中执行。包括在以前的Solaris发行版中的多数/etc/rc*.d脚本都已经作为SMF的一部分删除。其余的脚本能够继续运行,从而在不必将服务转换为使用SMF的情况下,添加第三方应用程序。

另外,对于要使用安装后的脚本改正的软件包,/etc/inittab/etc/inetd.conf必须可用。这些称为传统运行服务。通过运行inetconv命令,可以将这些传统运行服务添加到服务配置系统信息库中。您可以查看这些服务的状态,但是SMF不支持进行其他更改。使用此功能的应用程序将不会受益于SMF所提供的精确的故障隔离。

转换为利用SMF的应用程序可能无法再修改/etc/inittab/etc/inetd.conf文件。已转换的应用程序将不使用/etc/rc*.d脚本。同样,新版本的inetd不会在/etc/inetd.conf中查找项。

运行级

系统的运行级(又称作init状态)定义用户可以使用哪些服务和资源。系统一次只能在一个运行级下运行。

SolarisOS具有八个运行级,下表对其进行了说明。在/etc/inittab文件中,缺省的运行级指定为运行级3

142Solaris运行级

运行级

Init 状态

类型

用途

0

电源关闭状态

电源关闭

关闭操作系统,以便可以安全地关闭系统电源。

sS

单用户状态

单用户

以单用户身份运行,挂载并且能够访问某些文件系统。

1

管理状态

单用户

访问所有可用的文件系统。用户登录功能处于禁用状态。

2

多用户状态

多用户

用于正常操作。多个用户可以访问系统和所有的文件系统。除NFS服务器守护进程以外的所有守护进程都在运行。

3

共享NFS资源的多用户级别

多用户

用于共享NFS资源情况下的正常操作。这是SolarisOS的缺省运行级。

4

替换多用户状态

 

在缺省情况下未配置,但是可供客户使用。

 

142Solaris运行级

(续)

运行级

Init 状态

类型

用途

5

电源关闭状态

电源关闭

关闭操作系统,以便可以安全地关闭系统电源。如有可能,自动关闭支持此功能的系统的电源。

6

重新引导状态

重新引导

将系统关闭到运行级0,然后重新引导到共享NFS资源的多用户级别(或者inittab文件中的任何缺省级别)。

 

另外,svcadm命令可用于更改系统的运行级,方法是选择系统要在其下运行的里程碑。下表显示了与每个里程碑相对应的运行级。

143Solaris运行级和SMF里程碑

运行级

SMF里程碑FMRI

S

milestone/single-user:default

2

milestone/multi-user:default

3

milestone/multi-user-server:default

 

确定系统的运行级

通过使用who-r命令来显示运行级信息。

$who-r使用who-r命令可以为以前的任何级别确定系统当前的运行级。示例141确定系统的运行级

本示例显示系统的当前运行级以及以前的运行级的相关信息。

$ who -r . run-level 3 Dec 13 10:10 3 0 S $

who -r 命令的输出

说明

run-level 3

标识当前的运行级

Dec 13 10:10

标识上次更改运行级的日期

 

示例141确定系统的运行级(续)

who -r 命令的输出

说明

3

也标识当前的运行级

0

标识自上次重新引导以来系统处于该运行级的次

 

S

标识以前的运行级


/etc/inittab 文件

当您使用initshutdown命令引导系统或更改运行级时,init守护进程会通过从/etc/inittab文件中读取信息来启动进程。此文件为init进程定义以下重要的项:

■ init 进程将重新启动的项

■ 在终止时要启动、监视和重新启动的进程

在系统进入新运行级时执行的操作/etc/inittab文件中的每一项都具有以下字段:id:rstate:action:process下表描述了inittab项中的字段。

 

144inittab文件的字段说明

字段说明

id项的唯一标识符。rstate列出此项适用的运行级。action标识如何运行在进程字段中指定的进程。可能的值包括:sysinitboot

bootwaitwaitrespawn。有关其他操作关键字的说明,请参见inittab(4)

process 定义要执行的命令或脚本。

示例142缺省的inittab文件

以下示例显示随该Solaris发行版安装的缺省inittab文件。后面是该示例中每个输出行的说明。

ap::sysinit:/sbin/autopush -f /etc/iu.ap (1) sp::sysinit:/sbin/soconfig -f /etc/sock2path (2)

示例142缺省的inittab文件(续)

smf::sysinit:/lib/svc/bin/svc.startd >/dev/msglog 2<>/dev/msglog (3)

p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/... (4)

1.初始化STREAMS模块

2.  配置套接字传输提供器

3.初始化SMF的主重新启动器

4.  描述因电源故障而造成的关机

 

当系统能够在运行级3 下工作时出现的情况

1.init进程将启动,并读取/etc/default/init文件以设置任何环境变量。缺省情况下,仅设置TIMEZONE变量。

2.然后,init读取inittab文件并执行下列操作:

 

a.执行action字段中包含sysinit的所有进程项,以便在用户登录之前执行所有特殊的初始化。

b.将启动活动传递到svc.startd

 

有关init进程如何使用inittab文件的详细说明,请参见init(1M)

下表描述了在运行级3action字段中使用的关键字。

145运行级3的操作关键字说明

关键字

说明

powerfail

init进程收到电源故障信号时启动powerfail进程

respawn

启动该进程并在其中止时重新启动

wait

启动该进程,等待它完成后转至此运行级的下一项

 

下表描述了在运行级3执行的进程(或命令)。146运行级3的命令说明

命令或脚本的名称             说明

/usr/sbin/shutdown

关闭系统。只有当系统收到电源故障信号时,init进程才

 

运行shutdown命令。

/sbin/rcS

检查和挂载root(/)/usr/tmp/var/var/adm

 

/var/run 文件系统。

 

146运行级3的命令说明

(续)

命令或脚本的名称

 

说明

/sbin/rc2

 

启动标准的系统进程,将系统启动到运行级2(多用户级别)。

/sbin/rc3

 

针对运行级3启动NFS资源共享功能。

 

运行控制脚本

Solaris软件提供一系列详细的运行控制(rc)脚本,这些脚本可用来控制对运行级进行的更改。每个运行级都有一个与之相关的rc脚本,该脚本位于/sbin目录中:

rc0

■ rc1

■ rc2

■ rc3

rc5

rc6

rcS

 

对于/sbin目录中的每个rc脚本,有一个名为/etc/rcn.d的相应目录,其中包含执行该运行级的各种操作所需的脚本。例如,/etc/rc2.d包含用来启动和停止运行级2的进程的文件。

# ls /etc/rc2.d K03samba S42ncakmod S81dodatadm.udaplt K05volmgt S47pppd S89PRESERVE K06mipagent S65ipfboot S89bdconfig K07dmi S69mrouted S90wbem K07snmpdx S70sckm S93cacheos.finish K16apache S70uucp S94ncalogd K27boot.server S72autoinstall S95ncad README S73cachefs.daemon S95networker S10lu S75savecore S98deallocate

S20sysetup S80lp S99audit

S40llc2 S80spc

/etc/rcn.d脚本总是按ASCII排序顺序运行。脚本的名称具有如下形式

[KS][0-9][0-9]*

运行以K 开头的文件可以终止(中止)系统服务。运行以S 开头的文件可以启动系统服务。

运行控制脚本位于/etc/init.d目录中。这些文件链接到/etc/rcn.d目录中相应的运行控制脚本。

下一节概述了每个运行控制脚本的操作。

运行控制脚本摘要

以下几节概述了在更改运行级时用来启动和停止系统服务的运行控制脚本。

/sbin/rc0 脚本

/sbin/rc0脚本运行/etc/rc0.d脚本以执行下列任务:

  停止系统服务和守护进程

  终止所有正在运行的进程

  卸载所有的文件系统

 

/sbin/rc1 脚本

/sbin/rc1脚本运行/etc/rc1.d脚本以执行下列任务:

  停止系统服务和守护进程

  终止所有正在运行的用户进程

  卸载所有的远程文件系统

挂载所有的本地文件系统(如果以前的运行级为S

 

/sbin/rc2 脚本

/sbin/rc2脚本运行/etc/rc2.d脚本以执行下列任务,这些任务按功能进行分组:

与本地系统有关的任务:

  启动系统记帐和系统审计功能(如果已配置)

设置缺省的调度类(如果/etc/dispadmin.conf文件存在)

  配置串行设备流

配置WBEM(基于Web的企业管理)服务

与网络服务或安全有关的任务:

启动逻辑链路控制器(llc2)(如果已配置)

配置Solaris网络缓存和加速器(NetworkCacheandAccelerator,NCA)NCA日志记录(如果适用)

启动SolarisPPP服务器或客户机守护进程(pppoedpppd)(如果已配置)

启动目录服务器(slapd)守护进程(如果已配置)

配置系统资源控制和系统池(如果/etc/rctladm.conf/etc/pooladm.conf文件存在)

启动htt_server进程

 

 

与安装有关的任务:

在系统启动或关闭时为LiveUpgrade软件配置引导环境

检查/etc/.UNCONFIGURE文件是否存在,查看是否应当重新配置系统

从安装介质或引导服务器重新引导系统(如果/.PREINSTALL/AUTOINSTALL存在)

与硬件有关的任务:

启动SunFireTM15000密钥管理守护进程(sckmd)(如果适用)

■ 运行快擦写存储器更新脚本

■ 配置任何图形框架缓冲区或图形加速器

 

在运行级更改之间转换下列服务:

Apache(tomcat)

移动IP(mipagent)

Sambasmdbnmdb

■ SolsticeEnterpriseAgentsTM 守护进程(dmispdsnmpXdmid

 

在运行级2启动的许多系统服务和应用程序取决于系统上安装的软件。

/sbin/rc3 脚本

/sbin/rc3脚本运行/etc/rc3.d脚本以执行下列任务:

启动Apache服务器守护进程(tomcat)(如果已配置)

启动移动IP守护进程(mipagent)(如果已配置)

启动Samba守护进程(smdbnmdb)(如果已配置)

启动SolsticeEnterpriseAgents守护进程(dmispdsnmpXdmid

 

/sbin/rc5/sbin/rc6脚本

/sbin/rc5/sbin/rc6脚本运行/etc/rc0.d/K*脚本以执行下列任务:

■ 中止所有的活动进程

■ 卸载文件系统

 

/sbin/rcS 脚本

/sbin/rcS脚本运行/etc/rcS.d脚本以将系统启动到运行级S。此脚本启动wrsmconf来管理WCIRSM控制器配置。    

管理服务(任务)

本章介绍了管理和监视服务管理工具(ServiceManagementFacility,SMF)所需的任务。另外,本章还提供了与管理运行级脚本有关的信息。本章包含以下主题:

管理SMF服务(任务图)

监视SMF服务

管理SMF服务

配置SMF服务

使用运行控制脚本

对服务管理工具进行疑难解答

 

管理SMF服务(任务图)

以下任务图说明了使用SMF所需的过程。

任务

说明

参考

显示服务实例的状态。

显示所有正在运行的服务实例的状态。

如何列出服务的状态

显示服务相关项。

显示依赖指定服务的服务。

如何显示依赖某个服务实例的服务

显示服务的相关性。

显示指定服务所依赖的服务。此信息可用来帮助确定阻止服务启动的因素。

如何显示某个服务所依赖的服务

禁用服务实例。

关闭未正常工作或需要关闭以增强安全性的服务。

如何禁用服务实例

启用服务实例

启动服务。

如何启用服务实例

重新启动服务实例。

重新启动服务,而不必使用单独的命令先禁用服务,然后再启用服务。

如何重新启动服务

 

任务

说明

参考

修改服务实例。

修改指定服务实例的配置参数。更改由inetd控制的服务的配置属性。更改由inetd控制的服务的启动选项。

如何修改服务

如何更改由inetd控制的服务的属性

如何修改由inetd控制的服务的命令行参数

转换inetd.conf项。

inetd服务转换为可使用SMF来监视的传统运行服务。

如何转换inetd.conf

修复损坏的服务配置系统信息库。

将损坏的系统信息库替换为缺省版本。

如何修复已损坏的系统信息库

不用里程碑引导系统。

不用里程碑引导系统,以便可以修复那些阻止引导的配置问题。

如何在引导过程中以交互方式启动服务


监视SMF服务

下列任务显示如何监视SMF服务。

如何列出服务的状态

以下过程可用来显示哪些服务正在运行。

运行svcs命令。

在不使用任何选项的情况下运行此命令,会显示由FMRI指定的服务的状态报告。

% svcs -l FMRI

示例151显示rlogin服务的状态

以下示例显示包括许多合同的服务的状态。

% svcs -l network/login:rlogin
fmri svc:/network/login:rlogin
enabled true
state online
next_state none
restarter svc:/network/inetd:/default

contract_id 42325 41441 40776 40348 40282 40197 39025 38381 38053\

33697 28625 24652 23689 15352 9889 7194 6576 6360 5387 1475 3015\

6545 6612 9302 9662 10484 16254 19850 22512 23394 25876 26113 27326\ 34284 37939 38405 38972 39200 40503 40579 41129 41194

示例152显示sendmail服务的状态

以下示例显示包括相关性的服务的状态。

% svcs -l network/smtp:sendmail
fmri svc:/network/smtp:sendmail
enabled true
state online
next_state none
restarter svc:/system/svc/restarter:default
contract_id 29462
dependency require_all/refresh file://localhost/etc/nsswitch.conf (-)
dependency require_all/refresh file://localhost/etc/mail/sendmail.cf (-)
dependency optional_all/none svc:/system/system-log (online)
dependency require_all/refresh svc:/system/identity:domain (online)
dependency require_all/refresh svc:/milestone/name-services (online)
dependency require_all/none svc:/network/service (online)
dependency require_all/none svc:/system/filesystem/local (online)

示例153显示所有服务的状态

以下命令列出系统上安装的所有服务以及每个服务的状态。该命令既显示已禁用的服务又显示已启用的服务。

% svcs -a

 

显示由inetd控制的服务的状态

以下命令列出由inetd控制的服务,其中包括每个服务的FMRI、运行状态以及服务是处于启用还是禁用状态。

% inetadm

▼ 如何显示依赖某个服务实例的服务

以下过程显示如何确定依赖指定服务的服务实例。

显示服务相关项。

% svcs -D FMRI

显示依赖多用户里程碑的服务实例

以下示例显示如何确定依赖多用户里程碑的服务实例。

% svcs -D milestone/multi-user
STATE STIME FMRI
online Apr_08 svc:/milestone/multi-user-server:default

▼ 如何显示某个服务所依赖的服务

以下过程显示如何确定指定的服务实例所依赖的服务。

显示服务相关性。

% svcs -d FMRI

显示多用户里程碑所依赖的服务实例

以下示例显示多用户里程碑所依赖的服务实例。

% svcs -d milestone/multi-user:default
STATE STIME FMRI
disabled Aug_24 svc:/platform/sun4u/sf880drd:default
online Aug_24 svc:/milestone/single-user:default

online Aug_24 svc:/system/utmp:default online Aug_24 svc:/system/system-log:default online Aug_24 svc:/system/system-log:default online Aug_24 svc:/system/rmtmpfiles:default online Aug_24 svc:/network/rpc/bind:default online Aug_24 svc:/milestone/name-services:default online Aug_24 svc:/system/filesystem/local:default online Aug_24 svc:/system/mdmonitor:default

管理SMF服务

本节包括有关管理SMF服务的信息。

对于SMF使用RBAC权利配置文件

可以使用RBAC权利配置文件来允许用户管理某些SMF服务,而不必授予用户root访问权限。权利配置文件定义用户可以运行哪些命令。已经为SMF创建了下列配置文件:

ServiceManagement用户可以添加、删除或修改服务。

ServiceOperator-用户可以请求对任何服务实例的状态进行更改(如重新启动和刷新)。

 

有关授权的具体信息,请参见smf_security(5)手册页。有关指定权利配置文件的说明,请参见《SystemAdministrationGuide:SecurityServices》中的HowtoChangetheRBACPropertiesofaUser

▼ 如何禁用服务实例

请使用以下过程禁用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被禁用,其禁用状态将持续到重新引导之后。使服务重新运行的唯一方法就是启用服务。

1

成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2

检查要禁用的服务的相关项。

如果此服务具有所需的相关项,则无法禁用此服务。

# svcs -D FMRI

3

禁用此服务。

# svcadm disable FMRI

示例157禁用rlogin服务

第一个命令的输出表明rlogin服务没有相关项。本示例中的第二个命令禁用rlogin服务。第三个命令显示rlogin服务实例处于禁用状态。

# svcs -D network/login:rlogin

# svcadm disable network/login:rlogin

STATE STIME FMRI

# svcs network/login:rlogin

STATE STIME FMRI                                                                        

disabled 11:17:24 svc:/network/login:rlogin

▼ 如何启用服务实例

请使用以下过程启用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被启用,则只要符合服务相关性,系统每次重新引导后仍将保持该启用状态。

1 成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2 确定是否满足服务相关性。

如果服务处于启用状态,则说明满足了服务相关性。否则,请使用svcadmenable-rFMRI以递归方式启用所有的相关性。

# svcs -l FMRI|grep enabled

3

启用服务。

# svcadm enable FMRI

示例158启用rlogin服务本示例中的第二个命令启用rlogin服务。第三个命令显示rlogin服务实例处于联机状态。

# svcs -l network/login:rlogin|grep enabled
enabled false
# svcadm enable network/login:rlogin
# svcs network/login:rlogin
STATE STIME FMRI
online 12:09:16 svc:/network/login:rlogin

示例159在单用户模式下启用服务

以下命令启用rpc/bind-t选项在不更改服务系统信息库的临时模式下启动服务。在单用户模式下,系统信息库不可写。-r选项以递归方式启动指定服务的所有相关性。

# svcadm enable -rt rpc/bind

▼ 如何重新启动服务

如果由于配置更改或其他原因而需要重新启动当前正在运行的服务,那么,可以重新启动该服务,而不必键入单独的命令来先停止后启动该服务。只有必须在禁用服务之后、启用服务之前更改配置时,才需要特意地先禁用服务,然后再启用。

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2 重新启动服务。

# svcadm restart FMRI

▼ 如何恢复处于维护状态的服务

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2

确定依赖该服务的任何进程是否已停止。

通常,当某个服务实例处于维护状态时,与该实例相关的所有进程均已停止。但是,您应当在继续操作之前确保这一点。以下命令将列出与某个服务实例相关的所有进程以及这些进程的PID(进程标识符)。

# svcs -p FMRI

3

(可选的)中止剩余的所有进程。

对于由svcs命令显示的所有进程重复上述步骤。

# pkill -9 PID

4

如有必要,请修复服务配置。

有关错误的列表,请查看/var/svc/log中相应的服务日志文件。

5

恢复此服务。

# svcadm clear FMRI

如何恢复到另一个SMF快照

如果服务配置有误,则可以通过恢复到上次成功启动的快照来修复问题。在以下过程中,使用的是console-login服务以前的快照。

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2运行svccfg命令。#svccfg

svc:>

a.   选择要修复的服务实例。

必须使用对该实例进行完全定义的FMRI,而不允许使用快捷方式。

svc:> select system/console-login:default

svc:/system/console-login:default>

b. 创建可用快照的列表。

svc:/system/console-login:default> listsnap

initial running start

 svc:/system/console-login:default>

c.选择或恢复到start快照。start快照是上次成功启动服务时的快照。

svc:/system/console-login:default>revert start

svc:/system/console-login:default>

d.退出svccfg

svc:/system/console-login:default>quit

 

#

3  更新服务配置系统信息库中的信息。

该步骤用start快照中的配置信息更新系统信息库。

# svcadm refresh system/console-login

4  重新启动服务实例。

# svcadm restart system/console-login

如何使用其他SMF配置文件

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2选择要使用的SMF配置文件。

在本示例中使用的是generic_limited_net.xml配置文件。

# svccfg apply /var/svc/profile/generic_limited_net.xml

配置SMF服务

▼ 如何修改服务

以下过程显示如何更改不是由inetd服务管理的服务的配置。

1

成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2                                                                                             

根据需要对配置文件进行更改。

许多服务都有一个或多个用来定义启动或其他配置信息的配置文件。这些文件可以在服务正在运行时进行更改。只有当服务已经启动后,才能检查这些文件的内容。

3

重新启动服务。

# svcadm restart FMRI

示例1510共享NFS文件系统

要使用NFS服务共享文件系统,必须在/etc/dfs/dfstab文件中定义NFS文件系统,然后重新启动NFS服务。以下示例显示dfstab文件的外观以及如何重新启动服务。

# cat /etc/dfs/dfstab
.
.

share -F nfs -o rw /export/home
# svcadm restart svc:/network/nfs/server

▼ 如何更改服务的环境变量

以下过程显示如何修改cron环境变量以帮助进行调试。

1  成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2 检验该服务是否正在运行。

# svcs system/cron
STATE STIME FMRI
online Dec_04 svc:/system/cron:default

3

设置环境变量。

在本示例中,设置的是UMEM_DEBUGLD_PRELOAD环境变量。有关setenv子命令的信息,请参阅svccfg(1M)手册页。

# svccfg s system/cron:default setenv UMEM_DEBUG default

# svccfg -s system/cron:default setenv LD_PRELOAD libumem.so

4 刷新和重新启动该服务。

# svcadm refresh system/cron
# svcadm restart system/cron

5 检验是否已进行更改。

# 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
#

如何更改由inetd控制的服务的属性

1 成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2 列出指定服务的属性。

以下命令显示由FMRI标识的服务的所有属性。

# inetadm -l FMRI

3 更改该服务的属性。

inetd控制的服务的每个属性都由属性名和指定的值来定义。提供属性名而不指定值会将属性重置为缺省值。有关服务属性的具体信息应包含在与该服务相关的手册页中。

# inetadm -m FMRI property-name=value

4

检验属性是否已更改。

再次列出属性以确保已进行相应的更改。

# inetadm -l FMRI

5

确认更改已生效。

确认属性更改达到了所需的效果。

示例1511更改telnettcp_trace属性以下示例显示如何将telnettcp_trace属性设置为true。在运行telnet命令之后,检查syslog的输出,此时会发现所做的更改已经生效。#inetadm-lsvc:/network/telnet:defaultSCOPENAME=VALUEname="telnet"..defaultinherit_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

如何修改由inetd控制的服务的命令行参数

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2列出特定服务的exec属性。

以下命令显示由FMRI标识的服务的所有属性。添加grep命令会将输出限制在该服务的exec属性。#inetadm -l FMRI|grep exec

3更改该服务的exec属性。

具有exec属性的command-syntax集定义在启动服务时运行的命令字符串。

#inetadm -m FMRI exec="command-syntax"

4 检验属性是否已更改。

再次列出属性以确保已进行相应的更改。

# inetadm -l FMRI

示例1512ftp命令添加连接日志(-l)选项

在以下示例中,当ftp守护进程启动时,会向其中添加-l选项。此更改的效果可通过在ftp登录会话已经完成之后,检查syslog输出来查看。

# inetadm -l svc:/network/ftp:default | grep exec

exec="/usr/sbin/in.ftpd -a"

 # inetadm -m svc:/network/ftp:default exec="/usr/sbin/in.ftpd -a -l"

# inetadm -l svc:/network/ftp:default SCOPE NAME=VALUE

name="ftp"
endpoint_type="stream"
proto="tcp6"
isrpc=FALSE
wait=FALSE

exec="/usr/sbin/in.ftpd -a -l"

.

. # ftp localhost Connected to localhost. 220 yellow-19 FTP server ready. Name (localhost:root): mylogin 331 Password required for mylogin. Password: 230 User mylogin logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> quit

221-You have transferred 0 bytes in 0 files.

221-Total traffic for this session was 236 bytes in 0 transfers.

221-Thank you for using the FTP service on yellow-19.

221 Goodbye.

# tail -2 /var/adm/messages

Jun 21 06:54:33 yellow-19 ftpd[100773]: [ID 124999 daemon.info] FTP LOGIN FROM localhost [127.0.0.1], mylogin

Jun 21 06:54:38 yellow-19 ftpd[100773]: [ID 528697 daemon.info] FTP session closed

如何转换inetd.conf

以下过程将inetd.conf项转换为SMF服务清单。无论何时向系统添加依赖inetd的第三方应用程序,都需要运行此过程。如果您需要更改/etc/inetd.conf中项的配置,也需要运行此过程。

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2转换inetd.conf项。inetconv命令将选定文件中的每个项都转换为服务清单。#inetconv -i lename

示例1513/etc/inet/inetd.conf项转换为SMF服务清单

#inetconv i /etc/inet/inetd.conf

 

使用运行控制脚本(任务图)

任务

说明

参考

停止或启动服务。

使用运行控制脚本停止或启动服务。

如何使用运行控制脚本来停止或启动传统服务

添加运行控制脚本。

创建运行控制脚本并将其添加到/etc/init.d目录中。

如何添加运行控制脚本

禁用运行控制脚本。

通过重命名运行控制脚本文件来禁用该脚本。

如何禁用运行控制脚本

 

使用运行控制脚本

▼ 如何使用运行控制脚本来停止或启动传统服务

每个运行级都有单独脚本的一个优点是,可以在/etc/init.d目录中单独运行脚本来停止系统服务,而不必更改系统的运行级。

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2 停止系统服务。

#/etc/init.d/lename stop

3 重新启动系统服务。

#/etc/init.d/lename start

4 检验服务是否已停止或启动。

# pgrep -f service

示例1514使用运行控制脚本停止或启动服务

例如,可以通过键入以下命令来停止NFS服务器守护进程:

# /etc/init.d/nfs.server stop

# pgrep -f nfs

然后,可以通过键入以下命令来重新启动NFS服务器守护进程:

# /etc/init.d/nfs.server start
# pgrep -f nfs
101773
101750
102053
101748
101793
102114
# pgrep -f nfs -d, | xargs ps -fp
 

UID PID PPID C STIME TTY TIME CMD daemon 101748 1 0 Sep 01 ? 0:06 /usr/lib/nfs/nfsmapid daemon 101750 1 0 Sep 01 ? 26:27 /usr/lib/nfs/lockd daemon 101773 1 0 Sep 01 ? 5:27 /usr/lib/nfs/statd

root 101793 1 0 Sep 01 ? 19:42 /usr/lib/nfs/mountd
daemon 102053 1 0 Sep 01 ? 2270:37 /usr/lib/nfs/nfsd
daemon 102114 1 0 Sep 01 ? 0:35 /usr/lib/nfs/nfs4cbd

▼ 如何添加运行控制脚本

如果要添加用来启动和停止服务的运行控制脚本,请将该脚本复制到/etc/init.d目录中。然后,在要从其中启动和停止服务的rcn.d目录中创建链接。

有关对运行控制脚本进行命名的更多信息,请参见每个/etc/rcn.d目录中的README文件。以下过程介绍如何添加运行控制脚本。

1  成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2

将脚本添加到/etc/init.d目录中。#cplename/etc/init.d#chmod0744/etc/init.d/lename#chownroot:sys/etc/init.d/lename

3创建指向相应rcn.d目录的链接。#cd/etc/init.d#lnlename/etc/rc2.d/Snnlename#lnlename/etc/rcn.d/Knnlename

4  检验脚本在指定的目录中是否具有链接。

#ls/etc/init.d/*lename/etc/rc2.d/*lename/etc/rcn.d/*lename

示例1515添加运行控制脚本

以下示例显示如何为xyz服务添加运行控制脚本。

# cp xyz /etc/init.d
# chmod 0744 /etc/init.d/xyz
# chown root:sys /etc/init.d/xyz
# cd /etc/init.d
# ln xyz /etc/rc2.d/S99xyz
# ln xyz /etc/rc0.d/K99xyz
# ls /etc/init.d/*xyz /etc/rc2.d/*xyz /etc/rc0.d/*xyz

如何禁用运行控制脚本

通过在文件名开头加一个下划线(_)来重命名运行控制脚本可以禁用该运行控制脚本。系统不执行以下划线或点开头的文件。如果通过为文件添加后缀的方法来复制该文件,那么,带后缀和不带后缀的文件都将运行。

1

成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2

通过在新文件的开头添加下划线(_)来重命名脚本。#cd/etc/rcn.d

# mv lename_lename

3

检验脚本是否已重命名。

# ls _*

_lename

示例1516禁用运行控制脚本

以下示例显示如何重命名S99datainit脚本。

# cd /etc/rc2.d
# mv S99datainit _S99datainit
# ls _*
_S99datainit

对服务管理工具进行疑难解答

▼ 调试未启动的服务

在该过程中,打印服务处于禁用状态。

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2 请求有关挂起服务的信息。

# svcs -xv svc:/application/print/server:default (LP Print Service) State: disabled since Wed 13 Oct 2004 02:20:37 PM PDT Reason: Disabled by an administrator. See: http://sun.com/msg/SMF-8000-05

See: man -M /usr/share/man -s 1M lpsched

Impact: 2 services are not running:
svc:/application/print/rfc1179:default
svc:/application/print/ipp-listener:default

-x 选项提供有关受到影响的服务实例的其他信息。

3 启用服务。

# svcadm enable application/print/server

▼ 如何修复已损坏的系统信息库

以下过程显示如何将已损坏的系统信息库替换为缺省的系统信息库副本。系统信息库守护进程svc.configd在启动之后不会对配置系统信息库执行完整性检查。配置系统信息库存储在/etc/svc/repository.db中。配置系统信息库可能会由于以下某种原因而损坏:

■ 磁盘故障

■ 硬件错误

■ 软件错误

■ 无意中覆写文件

 

如果完整性检查失败,svc.configd守护进程会向控制台写入一条以下类似的消息:svc.configd:smf(5)databaseintegritycheckof:

/etc/svc/repository.db

failed. The database might be damaged or a media error might have
prevented it from being verified. Additional information useful to
your service provider is in:

/etc/svc/volatile/db_errors

The system will not be able to boot until you have restored a working
database. svc.startd(1M) will provide a sulogin(1M) prompt for recovery
purposes. The command:

/lib/svc/bin/restore_repository

canberuntorestoreabackupversionofyourrepository.Seehttp://sun.com/msg/SMF-8000-MYformoreinformation.随后svc.startd守护进程将退出并启动sulogin以便您进行维护。1sulogin提示符处输入root密码。sulogin使root用户能够进入系统维护模式来修复系统。2运行以下命令:

# /lib/svc/bin/restore_repository

运行此命令可指导您完成恢复未经损坏的备份所必需的步骤。SMF会在系统的任何关键时刻自动提取系统信息库的备份。有关更多信息,请参见SMF系统信息库备份

在启动/lib/svc/bin/restore_repository命令之后,会显示一条以下类似的消息:RepositoryRestoreutilitySeehttp://sun.com/msg/SMF-8000-MYformoreinformationontheuseofthisscripttorestorebackupcopiesofthesmf(5)repository.

If there are any problems which need human intervention, this script
will give instructions and then exit back to your shell.

Note that upon full completion of this script, the system will be
rebooted using reboot(1M), which will interrupt any active services.

如果要恢复的系统不是本地区域,则该脚本将说明如何使用读取和写入权限来重新挂载//usr文件系统,以便恢复数据库。该脚本会在列显这些说明之后退出。请按照这些说明执行操作,同时应特别注意可能出现的任何错误。

在使用写入权限挂载了root(/)文件系统之后,或者如果该系统是本地区域,则系统将提示您选择要恢复的系统信息库备份:

The following backups of /etc/svc/repository.db exists, from
oldest to newest:

... listofbackups ...

基于备份类型和备份时间来确定备份的名称。以boot开头的备份在系统引导之后、第一次更改系统信息库之前完成。以manifest_import开头的备份在svc:/system/manifest-import:default完成其进程之后完成。备份时间以YYYYMMDD_HHMMSS格式提供。

3 输入相应的响应。

通常会选择最新的备份选项。

Please enter one of:
1) boot, for the most recent post-boot backup
2) manifest_import, for the most recent manifest_import backup.
3) a specific backup repository from the above list
4) -seed-, the initial starting repository. (All customizations

will be lost.)
5) -quit-, to cancel.

Enter response [boot]:

如果在未指定要恢复的备份的情况下按Enter键,则会选择用[]括起的缺省响应。选择-quit-会退出restore_repository脚本并返回到shell提示符。

选择-seed-会恢复seed系统信息库。此系统信息库旨在用于初始安装和升级期间。如非万不得已,请勿使用seed系统信息库进行恢复。

在选择了要恢复的备份之后,系统将对其进行验证并检查其完整性。如有任何问题,restore_repository命令会列显错误消息并提示您进行其他选择。在选择了有效的备份之后,系统会列显如下信息,并提示您进行最终确认。

After confirmation, the following steps will be taken:

svc.startd(1M)andsvc.configd(1M)willbequiesced,ifrunning./etc/svc/repository.db--renamed-->/etc/svc/repository.db_old_YYYYMMDD_HHMMSS/etc/svc/volatile/db_errors--copied-->/etc/svc/repository.db_old_YYYYMMDD_HHMMSS_errorsrepository_to_restore--copied-->/etc/svc/repository.dbandthesystemwillberebootedwithreboot(1M).

Proceed [yes/no]?

4键入yes修复故障。restore_repository命令执行了列出的所有操作之后系统将重新引导。

如何在引导过程中以交互方式启动服务

如果在启动服务时出现问题,有时系统会在引导过程中挂起。以下过程显示如何解决此问题。

1成为超级用户或承担包括ServiceManagement权限配置文件的角色。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《SystemAdministrationGuide:SecurityServices》中的ConguringRBAC

2  在不启动任何里程碑的情况下引导。

此命令指示svc.startd守护进程临时禁用所有的服务并在控制台上启动suloginOk boot-m milestone=none

3root身份登录系统。

 

 

4 启用所有的服务。

# svcadm milestone all

5 确定引导过程挂起的位置。

当引导过程挂起时,通过运行svcs-a来确定哪些服务未在运行。在/var/svc/log中的日志文件中查看错误消息。

6 在修复这些问题之后,检验是否所有的服务都可以启动。

a. 检验是否所有必需的服务都已联机。

# svcs -a

b.检验是否满足console-login服务的相关性。以下命令检验控制台上的login进程是否将运行。#svcs-lsystem/console-login:default

7 继续执行正常的引导过程。

 

 

阅读(903) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~