AIX服务详解(原创)

AIX服务概述

在Windows中,服务标志着一个组件、一套应用、一套进程结构,这是大家所熟悉的。在AIX中也有类似Windows系统的组成构件。随着AIX的启动,各种在AIX中定制的子系统、子服务、系统组也会被启动。子系统、子服务、子系统组这三个概念之间的关系如下:

AIX将各种功能以组的形式体现,称之为子系统(Subsystem)。一个子系统就是可以通过控制系统操作的一个或一组程序或进程的集合,用来提供某类指定的功能,例如ypsery、dhcpsd 、xntpd、inetd、syslogd、sendmail等。

可再将子系统提供的服务细分为子服务(Subserver)。一个子服务是属于某个子系统的程序或进程,若干子服务可以构成一个子系统。

可以将若干具有相关性功能的子系统编制为子系统组(Subsystem Group),这是SRC可以管理的最高层次。

子系统组、子系统、子服务按照层次结构组织,构成了AIX的“服务”体系。下图所示为一个子系统组tcpip及其包含的几个子系统,其中inetd子系统又包含了若干子服务。

系统资源控制器

在AIX中,系统资源控制器(System Resource Controller,SRC)用来管理子系统。SRC拥有若干命令,用来查看(lssrc)、关闭(stopsrc)、启动(startsrc)、刷新子系统(refresh)。例如,可以使用lssrc-a命令查看当前运行的系统中子系统的活动情况,其中没有进程号的处于未启动状态。

lssrc
用途
获取子系统、子系统组或子服务器的状态。

描述
lssrc 命令发送请求到“系统资源控制器”以获取子系统、子系统组或所有子系统上的状态。lssrc 命令发送子系统请求包到守护程序,守护程序接着转发给子系统以获取子服务器状态或长型子系统状态。
lssrc 命令的输出结果有时可以为特殊的守护程序显示两项实例。一个实例是活动的,而另一个实例却是不起作用的。如果在不停止子系统的情况下修改子系统(使用 mkssys 命令或 chssys 命令),那么可能会发生这种情况。原始子系统保持活动,但已修改的实例还不起作用,直到子系统停止并重新启动。

标志

-a 列出所有已定义的子系统的当前状态。
-d 指定打印缺省记录。
-g   GroupName 指定要获取状态的子系统组。如果子系统对象类中不包含  GroupName   变量,那么该命令将失败。
-h   Host 指定请求状态操作的外部主机。本地用户必须以“root 用户”运行。远程系统必须配置接受远程“系统资源控制器”请求。即  srcmstr   守护程序(请参阅  /etc/inittab )必须已启动  -r   标志以及  /etc/hosts.equiv  .rhosts   文件必须配置为允许远程请求。
-l 请求子系统以长格式发送它的当前状态。长状态要求发送一个状态请求到子系统;返回该状态是子系统的职责。
-n NotifyName 指定一个通知方法的名称。
-N 指定以 SMIT 格式输出“对象数据管理器”(ODM)的通知对象类记录。
-o   Object 指定将子服务器  Object   变量作为字符串传递给子系统。
-p   SubsystemPID 指定要获取其状态的  SubsystemPID   变量的一个特定实例,或指定将要向其发送状态子服务器请求的子系统的一个特定实例。
-P   SubserverPID 指定一个  SubserverPID   变量以字符串格式传递给子系统。
-s Subsystem 指定一个获取状态的子系统。Subsystem   变量可以是子系统的真实子系统名或同义名。如果子系统对象类中不包含  Subsystem   变量,那么该命令将失败。
-S 指定以 SMIT 格式输出子系统对象类的 ODM 记录。
-t   Type 请求子系统发送子服务器的当前状态。如果子服务器对象类中不包含  Type   变量,那么该命令将失败。
-T 指定以 SMIT 格式输出子服务器对象类的 ODM 记录

示例
要获取本地机器上所有子系统的状态,请输入:
lssrc  -a
本命令获取本地机器上已知的所有子系统的状态。
要获取外部主机上的所有子系统的状态,请输入:
lssrc  -h zork  -a
本命令获取 zork 机器上已知的所有子系统的状态。
获取 srctest 子系统的状态,请输入:
lssrc  -s srctest
本命令获取本地机器的 srctest 子系统上的所有实例状态。
要使用 PID 获取子系统状态,请输入:
lssrc  -p 1234
本命令获取本地机器上 PID 为 1234 的子系统的状态。
要获取 tcpip 子系统组的状态,请输入:
lssrc  -g tcpip
本命令获取本地机器上 tcpip 组中子系统的所有实例的状态。
要获取 tester 子服务器的状态,请输入:
lssrc  -t tester  -p 1234
本命令获取 tester 子服务器上属于 srctest 子系统中 PID 为 1234 的子系统的状态。
要使用 PID 获取子系统状态,请输入:
lssrc  -l  -p 1234
本命令获取 PID 为 1234 的子系统的长状态。

startsrc
用途
启动子系统、子系统组或子服务器。
描述
startsrc 命令向系统资源控制器(System Resource Controller, SRC)发送请求以启动子系统或子系统组,或向启动子服务器的子系统发送一个信息包。
如果启动子服务器的请求发送到 SRC,且该子服务器所属的子系统当前不活动,那么 SRC 会启动子系统,并将启动子服务器的请求发送给子系统。

示例

-a   Argument 指定子系统执行时传递给子系统的自变量字符串。该字符串从命令行发送,并附加在子系统对象类中的命令行自变量上。指定的  Argument   字符串最大长度为 1200 个字符,否则命令就会失败。根据与 shell 使用的相同的规则,该命令参数由 SRC 传递到子系统。引号引起的字符串作为单个参数传递,并且以引号引起的字符串外的空格定界一个参数。可使用单引号和双引号。
-e   Environment 当子系统执行时,指定一个放入子系统环境中的环境字符串。指定的  Environment   字符串的最大长度为 1200 个字符,否则命令将失败。使用与 shell 所使用的相同的规则,SRC 为子系统设置环境。

引号引起的字符串指定给一个单一的环境变量,并且引号引起的字符串外的空格定界了每个要设置的环境变量。例如,-e "HOME=/tmp TERM=dumb MESSAGE=\"Multiple word message\""    HOME=/tmp   设置为子系统第一个环境变量,将  TERM=dumb   设置为子系统第二个环境变量,将  MESSAGE="Multiple word message"   设置为子系统第三个环境变量。

-g   Group 指定一组要启动的子系统。如果  Group   名称没有包含在子系统对象类中,那么该命令失败。
-h   Host 指定在其上请求此启动操作的外部主机。本地用户必须作为“root”用户运行。必须配置远程系统以接受系统资源控制器的请求。也就是说,srcmstr   守护程序(请参阅  /etc/inittab )必须用  -r   标志启动,并且必须配置/etc/hosts.equiv    .rhosts   文件以允许远程请求。
-o   Object 指定子服务器对象作为字符串传递给子系统。确定  Object   字符串的有效性是子系统的责任。
-p   SubsystemPID 指定启动子服务器请求要发送到的子系统的特定实例。
-s   Subsystem 指定要启动的子系统。Subsystem   可以是实际的子系统名,或子系统的同义词名称。如果  Subsystem   名称没有包含在子系统对象类中,那么该命令失败。
-t   Type 指定要启动的子服务器。如果子服务器对象类中未包含  Type ,命令将失败。

示例
要使用参数和环境变量启动一个子系统,请输入:
startsrc  -s srctest  -a "-D DEBUG"  -e "TERM=dumb HOME=/tmp"
这将使用其环境中的 "TERM=dumb" 、"HOME=/tmp"并且将 "-D DEBUG" 作为该子系统的两个参数来启动 srctest 子系统。
要启动外部主机上的子系统组,请输入:
startsrc  -g tcpip  -h zork
这将启动 zork 机器上 tcpip 子系统组中所有的子系统。
要启动一个子服务器,请输入:
startsrc  -t tester
这将向拥有 tester 子系统的子系统发送启动子服务器的请求。
要使用命令参数启动一个子系统,请输入:
startsrc  -s srctest  -a "-a 123 -b \"4 5 6\""
这将使 "-a" 作为 srctest 子系统的第一个参数,"123" 作为第二个参数,"-b" 作为第三个参数,而 "456" 作为第四个参数。

stopsrc
用途
停止子系统、子系统组或子服务器。
描述
stopsrc 命令向系统资源控制器(SRC)发送要求停止一个子系统、一组子系统或所有子系统的请求。stopsrc 命令向系统资源控制器发送子系统请求包,该请求包转发至子系统用于停止子服务器的请求。
如果没有 -f(强制停止)标志, 则假设为正常的停止操作。正常停止要求子系统或子服务器完成所有当前处理,在所有应用程序活动完成时释放资源,然后结束。子系统不再接受任何新的工作请求。
强制停止要求子系统或子服务器迅速结束,释放所有资源,但不等待应用程序活动完成。
取消操作是在子系统的资源释放后以及一段宽延时间后才停止子系统。此宽延时间在子系统的对象类中指定。取消停止只用于子系统的停止,并且总是以 SIGTERM 信号发送给子系统。子系统抓取这个信号,执行子系统清除操作,然后结束。如果子系统没有在等待时间内结束(等待时间在子系统对象类中指定),那么将 SIGKILL 信号发送给子系统以确保子系统的停止。
如果子系统使用套接字或消息队列进行通信,那么构造一个数据包并发送给子系统。如果子系统使用信号进行通信,那么将子系统对象类中的适当的信号发送给子系统。
标志

-a 指定停止所有子系统。
-c 指定停止请求是已取消的停止请求。对于取消停止请求,将  SIGTERM   信号发送到子系统。在子系统对象类中指定的等待时间过去后,如果子系统仍未停止,那么将  SIGKILL   信号发送到子系统。
-f 指定强制停止请求。
-g   Group 指定停止一组子服务器。如果  Group   名称没有包含在子系统对象类中,那么该命令失败。
-h   Host 指定请求该停止操作的外部  Host   机器。本地用户必须作为“root”用户运行。必须配置远程系统以接受系统资源控制器的请求。即  srcmstr   守护程序(请参阅  /etc/inittab )必须用  -r   标志启动,并且必须配置/etc/hosts.equiv    .rhosts   文件以允许远程请求。
-o   Object 指定子服务器  Object   值是作为字符串发送给子系统的。
-p   SubsystemPID 指定要停止的子系统的特定实例,或子服务器(停止子服务器请求要传递到该子系统)的特定实例。
-P   SubserverPID 指定子服务器 PID 是作为字符串传递给子系统的。
-s   Subsystem 指定要停止的子系统。Subsystem   参数可以是实际的子系统名称或子系统的同义词名称。stopsrc   命令停止所有当前活动的子系统实例。如果  Subsystem   名称没有包含在子系统对象类中,那么该命令失败。
-t   Type 指定要停止的子服务器。如果子服务器对象类中未包含指定的  Typestopsrc   命令将失败。

示例

要在外部主机上强制停止一个子系统,请输入:
stopsrc  -h zork  -s srctest  -f
这将强制停止 zork 机器上的 srctest 子系统的所有实例。
要取消停止一个子系统组,请输入:
stopsrc  -g tcpip  -c
这将在 tcpip 组的所有子系统上激活停止取消。
要停止一个子服务器,请输入:
stopsrc  -t tester  -p 1234
这将停止 tester 子服务器,它属于子系统 PID 为 1234 的 srctest 子系统。
要停止所有子系统,请输入:
stopsrc  -a
这将停止本地机器上所有活动的子系统。

refresh

用途

请求子系统或子系统组的刷新。
描述
refresh 命令发送一个转发到该子系统的子系统刷新请求给系统资源控制器。刷新操作依赖于子系统。
注意:如果子系统的通信方法是信号,refresh命令失败。

标志

-g   Group 指定一组要刷新的子系统。如果  Group   名称不包含在子系统对象类中,refresh   命令失败。
-h   Host 指定外部的  Host   机器,在该机器上请求刷新操作。本地用户必须作为“root”用户运行。 必须配置远程系统以接受远程系统资源控制器请求。就是说,srcmstr   守护程序(参阅  /etc/inittab )必须以  -r   标志启动,并且必须配置  /etc/hosts.equiv    .rhosts   文件允许远程请求。
-p   SubsystemPID 指定特定的要刷新的子系统实例。
-s   Subsystem 指定要刷新的子系统。Subsystem   名称可以是实际的子系统名称或者子系统的同义名称。 如果  Subsystem   名称不包含在子系统对象类中,refresh   命令失败。

示例
要刷新组,比如 tcpip,请输入:
refresh  -g tcpip
要刷新子系统,比如 xntpd,请输入:
refresh  -s xntpd

服务相关

相关文件

/etc/objrepos/SRCsubsys 指定 SRC 子系统配置对象类。
/etc/objrepos/SRCsubsvr 指定 SRC 子服务器配置对象类。
/etc/services 定义用于因特网服务的套接字和协议。
/dev/SRC 指定  AF_UNIX   套接字文件。
/dev/.SRC-unix 指定临时套接字文件位置。

查看SRC服务
$ps -ef|grep srcmstr
    frp 618582 931544  0 15:00:09 pts/3 0:00 grep srcmstr
   root  58126      1  0  Jun 01     - 0:13 /usr/sbin/srcmstr
$grep srcmstr /etc/inittab
srcmstr:23456789:respawn:/usr/sbin/srcmstr # System Resource Controller

查看ODM库中子服务信息
 $odmget SRCsubsvr
SRCsubsvr:
       sub_type = "ftp"
       subsysname = "inetd"
       sub_code = 21
SRCsubsvr:
       sub_type = "uucp"
       subsysname = "inetd"
       sub_code = 540
SRCsubsvr:
       sub_type = "telnet"
       subsysname = "inetd"
       sub_code = 23
SRCsubsvr:
       sub_type = "shell"
       subsysname = "inetd"
       sub_code = 514
SRCsubsvr:
       sub_type = "login"
       subsysname = "inetd"
       sub_code = 513
SRCsubsvr:
       sub_type = "exec"
       subsysname = "inetd"
       sub_code = 512
SRCsubsvr:
       sub_type = "finger"
       subsysname = "inetd"
       sub_code = 79
SRCsubsvr:
       sub_type = "tftp"
       subsysname = "inetd"
       sub_code = 69

查看ODM库中子系统定义
 $odmget SRCsubsys |more
SRCsubsys:
       subsysname = "inetd"
       synonym = ""
       cmdargs = ""
       path = "/usr/sbin/inetd"
       uid = 0
       auditid = 0
       standin = "/dev/console"
       standout = "/dev/console"
       standerr = "/dev/console"
       action = 2
       multi = 0
       contact = 3
       svrkey = 0
       svrmtype = 0
       priority = 20
       signorm = 0
       sigforce = 0
       display = 1
       waittime = 20
       grpname = "tcpip"
SRCsubsys:
       subsysname = "sshd"
       synonym = ""
       cmdargs = "-D"
       path = "/usr/sbin/sshd"
       uid = 0
       auditid = 0
       standin = "/dev/console"
       standout = "/dev/console"
       standerr = "/dev/console"
       action = 1
       multi = 0
       contact = 2
       svrkey = 0
       svrmtype = 0
       priority = 20
       signorm = 15
       sigforce = 9
       display = 1
       waittime = 20
       grpname = "ssh"


参考至:http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.cmds%2Fdoc%2Faixcmds3%2Flssrc.htm

            http://weiweinews.blog.51cto.com/1188066/699498
            http://space.itpub.net/24274429/viewspace-690303
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:[email protected]

猜你喜欢

转载自czmmiao.iteye.com/blog/1638833
AIX