IBM p 系列管理员认证(Test 191)指南系列,第 7 部分
2008-11-11 08:12:49 来源:WEB开发网系统资源控制器管理
系统资源控制器(System Resource Controller,SRC)提供了一组命令和子例程,以使系统管理员和程序员可以更轻松地创建和控制子系统。子系统是能够独立运行或与控制系统一起运行的任何程序、进程或其集合。子系统设计为提供指定功能的单元。子服务器是属于子系统的程序或进程。
SRC 的设计旨在尽可能降低操作人员的干预。它提供了使用通用命令行和 C 接口控制子系统进程的机制。该机制包括下列内容:
用于启动、停止和状态查询的统一用户界面。
子系统异常终止的日志记录。
当相关进程出现异常系统终止时调用的通知程序。
跟踪子系统、一组子系统或子服务器。
支持控制远程系统上的操作。
刷新子系统(例如在更改配置数据后)。
如果您希望使用通用的方法来启动、停止进程和收集进程上的状态信息,那么 SRC 很有用。
启动 SRC
如果系统资源控制器 (SRC) 在 /etc/inittab 文件中具有 /usr/sbin/srcmstr 守护进程的记录,那么它将在系统初始化过程中启动。缺省 /etc/inittab 文件已包含这样一条记录,因此可能不需要启动 SRC。如有必要,您可以从命令行、配置文件或 Shell 脚本启动 SRC,但有多种原因需要在初始化过程中启动 SRC:
从 /etc/inittab 文件启动 SRC 允许 init 命令在 SRC 因为某种原因停止时重新启动 SRC。
SRC 的设计旨在简化和减少操作员为控制子系统所进行的干预。从 /etc/inittab 文件以外的任何来源启动 SRC 都会影响实现该目标的效率。
缺省 /etc/inittab 文件包含使用 startsrc 命令启动打印调度子系统 (qdaemon) 的记录。在典型安装中,/etc/inittab 文件还包括使用 startsrc 命令启动其他子系统。由于 startsrc 命令要求运行 SRC,因此从 /etc/inittab 文件中删除 srcmstr 守护进程将导致这些 startsrc 命令失败。
使用命令 man srcmstr 参考手册页面,以了解支持远程 SRC 请求的配置要求。
如果 /etc/inittab 文件未包含 srcmstr 守护进程的记录,您可以通过以下过程添加一条记录:
1. 使用 mkitab 命令在 /etc/inittab 文件中为 srcmstr 守护进程创建一条记录。例如,若要创建与缺省 /etc/inittab 文件中相同的记录,请输入:
mkitab -i fbcheck srcmstr:2:respawn:/usr/sbin/srcmstr
-i fbcheck 标志确保将该记录插入所有子系统记录之前。
2. 通过输入以下命令通知 init 命令重新处理 /etc/inittab 文件:
telinit q
在 init 重新访问 /etc/inittab 文件时,它处理为 srcmstr 守护进程输入的新记录并启动 SRC。
telinit 命令
通过接受单个字符的参数,并发送信号以通知 init 进程执行适当的动作,telinit 命令可以直接控制 init 进程(进程 ID 为 1)的操作。通常情况下,telinit 命令将使系统进入到指定的运行级别。运行级别是一种软件配置,它只允许选定的一组进程存在。telinit 命令可以向 init 进程传递下列参数作为指令:
0-9:通知 init 进程将系统置于运行级别 0-9。
S、s、M、m:通知 init 进程将系统置于维护模式。
a、b、c:通知 init 进程仅检查 /etc/inittab 文件中在运行级别字段中包含 a、b、c 的那些记录。
Q、q:通知 init 进程重新检查整个 /etc/inittab 文件。
N:向重新生成的进程发送中止进程的信号。
重新启动 SRC
通常,您不需要重新启动 srcmstr。表 1 中显示了 AIX 5L 版本 5.1 的 /etc/inittab 的缺省记录。
表 1 /etc/inittab 文件中的缺省 srcmstr 记录
字段 | 值 |
Identifier | srcmstr |
RunLevel | 23456789 |
Action | respawn |
Command | /usr/sbin/srcmstr |
在以前版本的 AIX 中,srcmstr 的 RunLevel 值为 2。
如果 srcmstr 守护进程异常终止,则在 /etc/inittab 中指定的 respawn 操作将重新启动 srcmstr 守护进程。
然后,srcmstr 守护进程确定在以前的调用中有哪些 SRC 子系统是活动的。该守护进程与这些子系统(如果以前存在)重新建立通信并初始化私有内核扩展和 srcd 守护进程,以监视子系统进程。请注意,进程 ID 在 srcmstr 终止并自动重新启动后将发生更改,如图 1 所示。
图 1 srcmstr 守护进程的重新启动
但是,如果您已经编辑 /etc/inittab 文件并向 /usr/sbin/srcmstr 添加了 -r 或 –B 标志,则必须使用命令 init –q 来重新检查 /etc/inittab 或重新启动以使新标志生效。
-r 标志阻止 srcmstr 响应远程请求,而 -B 在 AIX 4.3.1 之前的版本模式下运行 srcmstr。
startsrc 命令
startsrc 命令向系统资源管理器 (SRC) 发送请求以启动子系统或一组子系统,或将数据包传递给启动子服务器的子系统。
如果向 SRC 发送了启动子服务器请求,并且子服务器所属的子系统目前处于非活动状态,则 SRC 启动该子系统并将启动子服务器请求传递给该子系统。
表 2 中显示了 startsrc 命令的标志。
表 2 startsrc 命令的标志
标志 | 说明 | 示例 |
启动子系统 | ||
-a 参数 | 指定在子系统执行时传递给子系统的参数字符串。 | startsrc -s srctest -a "-D DEBUG" 此命令使用“-D DEBUG”作为子系统的两个参数来启动 srctest 子系统。 |
-e Environment | 指定在子系统执行时放置在子系统环境中的环境字符串。 | startsrc -s srctest -e "TERM=dumb HOME=/tmp" 此命令启动 srctest 子系统,在子系统的环境中包含“TERM=dumb”和“HOME=/tmp”字符串。 |
-g Group | 指定要启动的一组子系统。 | startsrc -g nfs 此命令启动子系统 nfs 组中的所有子系统。 |
-s Subsystem | 指定要启动的子系统。 | startsrc -s srctest |
启动子系统或子服务器 | ||
-h Host | 指定请求此启动操作的外部主机。本地用户必须以 root 用户运行。 远程系统必须配置为接收远程系统资源控制器请求。 | startsrc -g nfs -h itsosmp 此命令在 itsosmp 计算机上启动 nfs 组中的所有子系统。 |
启动子服务器 | ||
-t Type | 指定要启动的一个子服务器。 | startsrc -t tester 此命令向拥有 tester 子系统的子系统发送启动子服务器请求。 |
-o Object | 指定将一个子服务器对象作为字符串传递给子系统。 子系统负责确定 Object 字符串的有效性。 | startsrc -o tester -p 1234 子服务器 tester 作为字符串传递给 PID 为 1234 的子系统。 |
-p SubsystemPID | 指定将向其传递启动子服务器请求的子系统的特定实例。 | startsrc -o tester -p 1234 此命令启动属于 srctest 子系统(子系统 PID 为 1234)的 tester 子服务器。 |
syslogd 守护进程
AIX 上的 syslog 功能是由 syslogd 守护进程提供的。syslogd 守护进程读取数据报套接字,并将每行消息发送到 /etc/syslog.conf 配置文件所描述的目的地。syslogd 守护进程将在被激活或收到挂起信号时读取该配置文件。
启动 syslogd 守护进程
在系统初始程序加载 (IPL) 过程中,通过 srcmstr 启动 syslogd 守护进程。图 2 中显示了 ODM 中的描述段。
图 2 ODM 中的 Syslogd 描述段
syslog 配置文件
该配置文件根据消息的优先级和生成消息的功能来通知 syslogd 守护进程将系统消息发送到何处。
如果不使用 -f 标志来指定替代的配置文件,则使用缺省配置文件 /etc/syslog.conf。
syslogd 守护进程将忽略空白行和以 #(磅字符)开头的行。
syslogd 守护进程配置文件中的行包含一个选择器字段和一个操作字段,两者之间由一个或多个制表符分隔。
选择器字段指定功能和优先级。使用“,”(逗号)分隔功能名称。使用“.”(句点)分隔选择器字段的功能和优先级部分。使用“;”(分号)分隔同一选择器字段中的多个条目。
若要选择所有功能,可以使用“*”(星号)。
操作字段确定要接收消息的目的地(文件、主机或用户)。如果将消息发送到远程主机,远程系统将按照自己的配置文件中的指示来处理消息。若要在用户的终端上显示消息,目的地字段必须包含一个有效的、已登录系统用户的名称。
图 3 显示了缺省 /etc/syslog.conf 的结尾部分。
图 3 syslog 配置文件示例
如果您决定从 /var/spool/syslog 文件的所有用户那里捕获警告消息,您应当执行下列步骤:
1. 将以下行添加到 /etc/syslog.conf 文件的末尾。
*.warning /var/spool/syslog
2. 创建 /var/spool/syslog 文件。
touch /var/spool/syslog
3. 更改 /var/spool/syslog 的权限位,以允许所有用户向该文件写入警告消息。
chmod 666 /var/spool/syslog
4. 刷新 syslogd 守护进程以使对 syslog 配置文件的更新生效。
refresh -s syslogd
再循环和刷新 syslogd 守护进程
syslogd 守护进程将在被激活或收到挂起信号时读取该配置文件。刷新将保留当前进程 ID,并且是读取配置文件的干扰较少的方法。当您感觉服务存在问题并且需要完全重新启动时,再循环非常有用。您可以通过停止 syslogd 守护进程,然后启动该进程来再循环 syslogd 守护进程。
# stopsrc -s syslogd
# startsrc -s syslogd
或者,您可以通过发送 HUP 信号来刷新 syslogd 守护进程。
ps -ef |grep syslogd
请注意,本例中 syslogd 进程的 PID 为 5682。
kill -1 5682
从多个系统收集 syslog 数据
syslogd 守护进程记录从远程主机接收的消息,除非您使用 -r 标志禁用该功能。
在远程主机的 /etc/syslog.conf 中,不是在目的地部分指定文件的完整路径名称,而是输入 @Host,其中 Host 是远程系统的主机名。
刷新守护进程
使用刷新命令通知系统资源控制器 (SRC) 资源(如子系统或一组子系统)刷新自己。
使用刷新命令的先决条件包括:
SRC 必须正在运行。
您希望刷新的资源不能使用信号通信方法。
您希望刷新的资源必须以编程方式设置为响应刷新请求。
刷新命令向系统资源控制器发送将转发至子系统的子系统刷新请求。刷新操作依赖于子系统。
若要启动 Lotus Domino Go Webserver,请使用下列命令:
startsrc -s httpd
若要允许用户在新目录 /newdir 中打开主页 (index.html),您需要在 /etc/httpd.conf 文件中添加一个目录映射:
pass /* /newdir/*
若要刷新 Web 服务器,请输入:
refresh -s httpd
此后,用户可以在其 Web 浏览器中输入以下 URL 来访问新主页:
http://server_name[:port_number]/newdir/index.html
cron 守护进程
cron 守护进程在指定的日期和时间运行 Shell 命令。cron 守护进程调度下列事件类型:
crontab 命令事件
at 命令事件
batch 命令事件
sync 子例程事件
ksh 命令事件
csh 命令事件
这些事件的处理方式是在 /var/adm/cron/queuedefs 文件中指定的。
可根据 crontab 文件中包含的说明指定定期计划命令。可以使用 crontab 命令提交您的 crontab 文件。使用 at 命令提交只运行一次的命令。因为 cron 守护程序从不会退出,所以它应当只运行一次。
cron 守护进程只在初始化之后检查 crontab 文件和 at 命令文件。当您使用 crontab 命令更改 crontab 文件时,将向 cron 守护程序发送指示更改的消息。
这会省去定期检查新文件或已更改文件的开销。
当 TZ 环境变量发生更改时,必须重启 cron 守护进程,可以通过 chtz 命令(一个基于Web 的系统管理应用程序)或 SMIT 重新启动。这使 cron 守护进程可以使用新 TZ 环境变量的正确时区和夏令时更改信息。
cron 守护进程在 /var/adm/cron/log 文件中创建记录其活动的日志。
Crontab 文件记录格式
crontab 文件包含各个 cron 作业的条目。条目通过换行符进行分隔。每个 crontab 文件条目包含六个由空格或制表符分隔的字段,其格式如下:
minute hour day_of_month month weekday command
这些字段接受下列值:
minute 0 至 59
hour 0 至 23
day_of_month 1 至 31
month 1 至 12
weekday 0 至 6 表示周日至周六
command Shell 命令
您必须为每个字段指定一个值。除 command 字段外,这些字段可以包含以下值:
位于指定范围内的数字。若要在五月份运行命令,请在 month 字段中指定 5。
由连字符分隔的两个数字表示包含范围。若要在周二至周五运行 cron 作业,请为 weekday 字段输入 2-5。
由逗号分隔的一列数字。若要在某月内的第一天和最后一天运行命令,您应在 day_of_month 字段中指定 1,31。
*(星号)表示所有允许值。若要每小时运行一次作业,请在 hour 字段中指定一个星号。
空行和第一个非空白字符为 #(数字符号)的行将被忽略。
注意:任何以反斜杠开头的字符(包括 %)都会按其字面意义进行处理。
例如,如果您编写了存储在 /root 目录中的脚本 fullbackup,您希望将其安排在每月 15 日的凌晨 1 点执行,请使用 crontab –e 命令添加如下所示的条目:
0 1 15 * * /fullbackup
注意:必须开启 /fullbackup 文件的执行权限位。
允许访问 crontab 命令
/var/adm/cron/cron.allow 和 /var/adm/cron/cron.deny 文件控制哪些用户可以使用 crontab 命令。root 用户可以创建、编辑或删除这些文件。这些文件中的条目为用户登录名,每个名称占一行。
如果 cron.allow 文件存在,那么只有登录名出现在该文件中的那些用户才可以使用 crontab 命令。
注意:如果 cron.allow 文件存在,那么 root 用户名必须出现在该文件中。
若要明确地阻止用户使用 crontab 命令,您可以将该用户的登录名列在 cron.deny 文件中。如果只存在 cron.deny 文件,则登录名未出现在该文件中的任何用户都可以使用 crontab 命令。
如果以下任一个条件为真,则该用户不能使用 crontab 命令:
cron.allow 文件和 cron.deny 文件不存在(只允许 root 用户)。
cron.allow 文件存在,但用户的登录名未在该文件中列出。
cron.deny 文件存在,并且用户的登录名在该文件中列出。
如果 cron.allow 和 cron.deny 文件都不存在,则只有 root 用户可以使用 crontab 命令提交作业。
常规操作
当您以 root 用户身份登录或使用 su 命令成为 root 用户时,crontab -l 命令将显示在 crontab 文件中包含三个注释条目。它们分别是:
#0 3 * * * /usr/sbin/skulker
#45 2 * * 0 /usr/lib/spell/compress
#45 23 * * * ulimit 5000; /usr/lib/smdemon.cleanu > /dev/null
这些是常规操作作业,您可以启用它们以清理系统。使用 crontab -e 命令删除第 1 列中的 # 标记,从而启用这些作业。
同样,您可以根据需要更改作业运行的时间。图 4 中显示了 crontab 文件示例。
图 4 crontab 文件示例
skulker 命令
skulker 命令是从文件系统中定期清理过时文件或无用文件的命令文件。候选文件包括 /tmp 目录中的文件、早于指定存在时间的文件、a.out 文件、核心文件或 ed.hup 文件。
cron 命令通常在每天的非高峰时间段调用 skulker 命令,通常将其作为记帐过程的一部分。按照分布式版本中显示的模式来修改 skulker 命令以符合本地需求。系统用户应当了解自动删除文件的标准。
在 skulker 命令中使用时,find 命令和 xargs 命令可构成功能强大的组合。使用 find 表达式可以方便地表示大多数文件选择标准。使用 xargs 命令可以对结果文件列表进行分段并插入 rm 命令,从而减少使用单独的命令删除各个文件可能导致的开销。
注意:由于 skulker 命令由 root 用户运行并完全用于删除文件,因此它有可能产生意外的结果。
在安装新 skulker 命令之前,通过使用 xargs –p 命令手动运行附加项来测试其文件删除标准的任何附加项。在您已确认 skulker 命令只删除您希望删除的文件后,可以安装该命令。
若要启用 skulker 命令,您应当使用 crontab -e 命令删除 /var/spool/cron/crontabs/root 文件中 /usr/sbin/skulker 行开头的 #(磅字符),从而删除注释语句。
/usr/lib/spell/compress 命令
这不是 AIX compress 命令。/usr/lib/spell/compress 命令是用于压缩 spell 程序日志的 Shell 脚本。
若要启用 /usr/lib/spell/compress 命令,您应当使用 crontab -e 命令删除 /var/spool/cron/crontabs/root 文件中 /usr/lib/spell/compress 行开头的 #(磅字符),从而删除注释语句。
图 5 显示了该脚本。
图 5 /usr/lib/spell/compress 脚本
该脚本删除 /usr/lib/spell/spellhist 文件中的所有重复单词。该文件在用户调用 spell 命令时进行更新。
/usr/lib/smdemon.cleanu 命令
smdemon.cleanu 命令是一个 Shell 过程,它清除 sendmail 命令队列并维护 /var/spool/mqueue/log 文件。
若要启用 smdemon.cleanu 命令,您必须通过删除 /var/spool/cron/crontabs/root 文件中 smdemon.cleanu 行开头的 #(磅字符)来删除注释语句。如果 /var/spool/mqueue 目录不存在,请不要更改 /var/spool/cron/crontabs/root 文件。
请注意每个 smdemon.cleanu 会话的日志文件的平均大小乘以日志文件数不能超过您所需要的空间。
您可以调整日志文件数以满足您的需要。
注意:smdemon.cleanu 命令通常不在命令行输入。由 cron 守护进程执行该命令。
- ››IBM WebSphere常见问题解答
- ››IBM WebSphere Studio V5相关认证资料
- ››IBM WebSphere应用服务器发展趋势
- ››IBM WebSphere Application Server诊断和调优(一...
- ››IBM WebSphere Application Server诊断和调优(二...
- ››IBM WebSphere Performance Pack服务器
- ››IBM WebSphere软件概述
- ››IBM PowerVM 实战手册,第 3 部分 : VIO server 配...
- ››IBM PowerVM 实战手册,第 2 部分 : VIO server 准...
- ››IBM p 系列服务器系统固件升级攻略
- ››IBM PowerVM 概述
- ››IBM Systems Director 在 AIX 上的常见问题及解决...
更多精彩
赞助商链接