Indiana — 启用、重启和关闭服务

By , 2007年11月15日 1:11 上午

(由于本人水平有限,此部分的内容大幅度地抄录了段风雷编著的《Solaris 10红宝书》中的第9 章《Solaris 10的预测性自我修复》的有关段落。抄录的部分仅是针对初学者有用,如果您需要进一步了解与本章节有关的技术细节,建议您购买此书深入学习。)

Solaris 服务管理器(Service Management Facility, SMF)是Solaris 10以及后续版本的Solaris操作系统当中采用的软件服务管理工具。SMF按照服务的相关性来启动、停止和管理服务,并兼容现有的管理习惯(如启动脚 本等)。对于使用过Windows的读者来说,SMF的功能类似于“控制面板”中的“服务”;对于使用过Linux和Unix的读者来说,这个功能部分替 代了/etc/rc*.d中的启动脚本和超级服务器inetd/xinetd的功能。

SMF特性简介

当出现了管理错误、软件缺陷或者是硬件缺陷导致服务程序异常中止的时候,SMF可以自动按照一定的次序重新启动服务。

使用svcs命令可以查看所有的服务,而是用svcadm和svccfg命令可以管理所有的服务。使用svcs -p命令可以查看与本服务相关联的其他服务。

通过服务快照设置可以很容易地实现服务的备份和恢复。

通过svcs -x命令可以很容易地对服务进行调试,并且可以使每个服务都有自己的固定日志。

所有的服务都可以通过svcadm进行启动和关闭。具有相应角色的非root用户也可以启动、修改和关闭服务。

SMF服务标示

SFM服务标识(Fault Management Resource Identifier, FMRI)指的是服务实例的命名。举个例子,rlogin服务的FMRI是svc:/network/login:rlogin。

同理,类似的FMRI还有svc:/system/system-log:default。

SMF服务状态

服务的状态包括如下几种类型:

状态标示 状态描述
degraded 服务已经启动,但是在受限制的状态下运行。
disabled 服务处于关闭状态。
legacy_run 这个服务目前无法被SMF所管理,但是可以被SMF所监测到。
maintenance 维护状态。这个服务有大量的错误并且应该有系统维护人员进行修复。
offline 这个服务已经启动,但是处于离线运行状态。
online 这个服务已经启动,并且处于在线运行状态。
uninitialized 这个服务尚未初始化。

SMF相关命令

下面我们通过几个具体的实例来介绍SMF的使用方法。这些操作需要您首先拥有root权限。

(0) 获得root权限

# su
(此处需要输入您的root密码。)

(1) 察看所有服务的状态

# svcs -a

(2) 察看sendmail这个服务的状态

# svcs sendmail
# svcs -l sendmail

(3) 察看sendmail这个服务所依赖的其他服务的状态

# svcs -d sendmail

(4) 关闭sendmail这个服务

# svcadm disable sendmail

(5) 再次察看sendmail这个服务的状态

# svcs sendmail
# svcs -l sendmail

(6) 启动sendmail这个服务

# svcadm enable sendmail

(8) 再次察看sendmail这个服务的状态

# svcs sendmail
# svcs -l sendmail

(9) 重新启动sendmail这个服务

# svcadm restart sendmail

进一步的练习

由于大部分网友和sendmail这个服务打交道的机会比较少,在这里我们利用SSH这个服务来做一个进一步的练习,以加深各位对SMF服务的了解。

SSH 是一种加密远程传输的协议,可以用于登录远程的服务器。和我们经常使用的telnet所不同的是,通过SSH进行传输的信息是经过加密的,所以不容易被第 三方所截获和破解。在大部分的Unix/Linux发行版上都提供了SSH服务器和客户端,OpenSolaris Developer Preview版本也是这样。

在缺省的状态下,在OpenSolaris Developer Preview版本上SSH服务是打开的。我们可以使用svcs命令检查一下这个服务的状态:

# scvs ssh

如果SSH服务确实是打开的,我们可以在命令行下通过SSH连接到本机。

# ssh localhost

如果没有什么意外的话,我们应该可以看到要求您输入密码的提示。这是因为SSH客户短缺省地使用了您当前的用户名作为登陆用户名,因此您只需要提供您的登陆密码就可以了。

现在我们关闭SSH服务,然后检查该服务的状态:

# svcadmin disable ssh
# svcs ssh

可以看到,这时候SSH服务已经被关闭。如果我们再次尝试通过SSH连接到本机的话,会由于超时而连接失败。

# ssh localhost

现在我们启用SSH服务,然后检查该服务的状态:

# svcadmin enable ssh
# svcs ssh

可以看到,这时候SSH服务已经被起用。如果我们再次尝试通过SSH连接到本机的话,会再次看到要求输入密码的提示。

# ssh localhost

Leave a Reply

Panorama Theme by Themocracy