WEB开发网
开发学院操作系统Linux/Unix IBM AIX V5.3 系统管理(Test 222)认证指南系列,第... 阅读

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

 2008-11-10 08:26:26 来源:WEB开发网   
核心提示:问题确定和解决这个部分提供了一些相关的信息以帮助您解决网络、硬件、或者操作系统方面的问题, 网络问题在这一部分中,IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上),您将了解系统中网络支持和故障诊断的一些重要的方面,包括修改网络适配器和接口,可以使用 lsuser

问题确定和解决

这个部分提供了一些相关的信息以帮助您解决网络、硬件、或者操作系统方面的问题。

网络问题

在这一部分中,您将了解系统中网络支持和故障诊断的一些重要的方面,包括修改网络适配器和接口。请注意,本部分并没有提供网络支持方面的所有内容(因为网络可能是非常复杂的环境),但是为支持专业人员提供了一个很好的起点。

ping 命令

ping 命令适用于下列情况:

确定网络以及各种外部主机的状态

跟踪和隔离硬件和软件问题

测试、测量和管理网络

ping 命令发送一个 Internet Control Message Protocol (ICMP) ECHO_REQUEST,以便从网络中的某台主机或者网关那里获取一个 ICMP ECHO_RESPONSE。如果这台主机正在运行,并且位于该网络中,那么它将对 ECHO 请求做出响应。每个 ECHO 请求包含一个 Internet Protocol (IP) 和 ICMP Header,后面紧跟着一个 timeval 结构,以及足够数量的字节以填充数据包。

在缺省情况下,ping 命令每秒发送一个数据报,并为每个接收到的响应输出一行内容。ping 命令将计算往返时间,以及数据包丢失的统计信息,并在结束时显示简要的汇总信息。当程序超时、或者收到一个 SIGINT 信号 (Ctrl-C) 时,ping 命令将会结束。

对于 ping 命令,唯一必需的参数是一个有效的主机名、或者 Internet 地址。

说明:因为持续的 ECHO 请求可能会加重系统的负担,所以主要应该在进行问题隔离的时候使用重复的请求。

下面的示例说明了 ping 命令的某些用途:

要检查到某台主机的网络连接,并指定发送五个 ECHO 请求,可以使用下面的命令:

# ping -c 5 server2                    
PING server2.itsc.austin.ibm.com:(9.3.5.195): 56 data bytes
64 bytes from 9.3.5.195:icmp_seq=0 ttl=255 time=0 ms   
64 bytes from 9.3.5.195:icmp_seq=1 ttl=255 time=0 ms   
64 bytes from 9.3.5.195:icmp_seq=2 ttl=255 time=0 ms   
64 bytes from 9.3.5.195:icmp_seq=3 ttl=255 time=0 ms   
64 bytes from 9.3.5.195:icmp_seq=4 ttl=255 time=0 ms   
                              
----server2.itsc.austin.ibm.com PING Statistics----    
5 packets transmitted, 5 packets received, 0% packet loss 
round-trip min/avg/max = 0/0/0 ms             
#

要显示所返回的数据包的路由缓冲区,可以运行下面的命令:

# ping -R server2                         
PING server2.itsc.austin.ibm.com:(9.3.5.195): 56 data bytes    
64 bytes from 9.3.5.195:icmp_seq=0 ttl=255 time=0 ms       
RR:server2.itsc.austin.ibm.com (9.3.5.195)          
server3.itsc.austin.ibm.com (9.3.5.196)          
64 bytes from 9.3.5.195:icmp_seq=1 ttl=255 time=0 ms  (same route)
64 bytes from 9.3.5.195:icmp_seq=2 ttl=255 time=0 ms  (same route)
64 bytes from 9.3.5.195:icmp_seq=3 ttl=255 time=0 ms  (same route)
64 bytes from 9.3.5.195:icmp_seq=4 ttl=255 time=0 ms  (same route)
64 bytes from 9.3.5.195:icmp_seq=5 ttl=255 time=0 ms  (same route)
^C                                 
----server2.itsc.austin.ibm.com PING Statistics----        
6 packets transmitted, 6 packets received, 0% packet loss     
round-trip min/avg/max = 0/0/0 ms                 
#

说明: IP Header 最多只能记录九次路由。另外,许多主机和网关将忽略这个选项。

如果您使用 ping 命令无法连接到相同子网中的其他计算机,那么应该在您的系统网络配置方面查找存在的问题。arp 和 ifconfig 命令可以帮助您隔离这个问题。

arp 命令

arp 命令可以显示并修改地址解析协议(Address Resolution Protocol,ARP)所使用的 Internet 地址到物理地址(MAC 地址)的转换表。arp 命令可以显示由 HostName 变量指定的主机的当前 ARP 条目。可以通过名称或者数值(使用 Internet 带点的十进制表示法)来指定主机。

说明:您可以使用 arp 命令来隔离仅在本地子网中存在的问题。

例如,在尝试对 IP 为 9.3.5.193 的系统使用 ping 命令时,我们获得了如下的输出:

# ping 9.3.5.193                     
PING 9.3.5.193:(9.3.5.193): 56 data bytes        
^C                            
----9.3.5.193 PING Statistics----             
7 packets transmitted, 0 packets received, 100% packet loss
#

但是,当尝试对 IP 为 9.3.5.196 的系统使用 ping 命令时,我们获得了如下的输出:

# ping 9.3.5.196                    
PING 9.3.5.196:(9.3.5.196): 56 data bytes       
64 bytes from 9.3.5.196:icmp_seq=0 ttl=255 time=0 ms  
64 bytes from 9.3.5.196:icmp_seq=1 ttl=255 time=0 ms  
64 bytes from 9.3.5.196:icmp_seq=2 ttl=255 time=0 ms  
64 bytes from 9.3.5.196:icmp_seq=3 ttl=255 time=0 ms  
64 bytes from 9.3.5.196:icmp_seq=4 ttl=255 time=0 ms  
^C                           
----9.3.5.196 PING Statistics----            
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0/0/0 ms            
#

查看 arp 表,我们发现(在使用 grep 命令对输出进行筛选之后):

# arp -a | grep 9.3.5.19                            
bcmmint.itsc.austin.ibm.com (9.3.5.193) at (incomplete)           
server3.itsc.austin.ibm.com (9.3.5.196) at 0:2:55:d3:dd:0 [ethernet] stored in
bucket 46

IP 为 9.3.5.193 的系统的物理地址无法解析;您应该在该系统中查找存在的问题。如果您的系统无法解析相同子网中其他计算机的物理地址,那么您应该检查您的电缆连接。ifconfig 命令也可以用于检查网络接口的状态。

ifconfig 命令

ifconfig 命令可用于网络问题确定任务,以显示或更改接口的状态、或者重新定义 IP 地址,如下面的示例所示:

要显示接口 en2 的状态,可以输入:

# ifconfig en2                                 
en2:
flags=5e080863,c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT
,64BIT,CHECKSUM_OFFLOAD,PSEG,CHAIN>                      
inet 9.3.5.196 netmask 0xffffff00 broadcast 9.3.5.255         
tcp_sendspace 131072 tcp_recvspace 65536               
#

接口 en2 已经启用 (UP)。

要仅显示那些已经禁用的接口,可以输入:

# ifconfig -a -d

en1:
flags=5e080862,c0<BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64
BIT,CHECKSUM_OFFLOAD,PSEG,CHAIN>                        
inet 2.2.2.2 netmask 0xffffff00 broadcast 2.2.2.255          
tcp_sendspace 131072 tcp_recvspace 65536               
#

这个输出显示,接口 en1 已经禁用 (DOWN)。如果您无法连接到子网中配置为这个接口的计算机,那么可以运行 errpt 命令,并查看是否报告了有关该接口的任何错误(例如,网络中存在重复的 IP 地址);运行 diag 命令以便对该接口进行诊断。

要启用接口 en1 并将其标记为活动的,可以输入下面的命令:

# ifconfig en1 up

如果这些接口没有任何问题,它们处于活动状态,并且您的系统无法连接到相同子网中的其他计算机,那么您应该检查该接口的子网掩码是否正确。要将接口 en1 的子网掩码更改为 255.255.255.252,可以输入下面的命令:

# ifconfig en1 netmask 255.255.255.252 up

网络路由配置也可能导致出现通信问题;traceroute 命令可以帮助您对路由进行跟踪。

traceroute 命令

traceroute 命令将尝试跟踪 IP 数据包到某个 Internet 主机的路由,其具体方法是:先启动一个具有较小的最大存活时间值的 UDP 探测数据包,然后侦听从沿途的网关发来的 ICMP TIME_EXCEEDED 响应。探测数据包的存活时间值在开始时为一个跃点,每次对该值增加一个跃点,直至返回 ICMP PORT_UNREACHABLE 消息。ICMP PORT_UNREACHABLE 消息说明该主机已经被定位,或命令已经达到跟踪所允许的最大跃点数目。

说明: traceroute 命令可用于网络测试、测量和管理方面。它应该主要用于手动故障隔离。由于它将加重网络的负担,所以不应该在正常操作的情况下、或者自动化的脚本中使用 traceroute 命令。

对于 traceroute 命令,唯一必需的参数是目标主机名、或者 IP 数值。traceroute 命令将根据传出接口的最大传输单元(Maximum Transmission Unit,MTU)来确定探测数据包的长度。它将 UDP 探测数据包设置为一个不可能的值,以便防止目标主机对其进行处理。

例如,如果您希望查看从 IP 地址为 9.3.1.141 的系统到 IP 地址为 9.8.0.8 的系统的路由信息,那么您应该输入下面的命令:

# traceroute 9.8.0.8
trying to get source for 9.8.0.8
source should be 9.3.1.141
traceroute to 9.8.0.8 (9.8.0.8) from 9.3.1.141 (9.3.1.141), 30 hops max
outgoing MTU = 1492
1 itso.austin.ibm.com (9.3.1.74) 11 ms 2 ms 2 ms
2 9.444.33.129 (9.444.33.129) 4 ms 4 ms 4 ms
3 site1.austin.ibm.com (9.3.90.200) 7 ms
4 site2.south.ibm.com (9.3.200.202) 8 ms 7 ms
5 site3.austin.ibm.com (199.4.213.125) 17 ms 19 ms 17 ms
6 9.88.1.174 (9.88.1.174) 74 ms 80 ms 71 ms
7 9.8.0.8 (9.8.0.8) 327 ms 329 ms 327 ms

硬件问题

在这个部分中,我们将介绍如何解释 errpt 命令所生成的输出,以及如何运行诊断任务以查找与硬件相关的问题并进行故障排除。

errpt 命令

errpt 命令将从错误日志中的条目生成一个错误报告,但是它并不进行错误日志分析;对于错误分析,可以使用 diag 命令。

可以考虑下面的示例,其中通过执行 errpt -a 命令生成了一个错误报告:

# errpt -a
---------------------------------------------------------------------------
LABEL:LVM_SA_STALEPP                      
IDENTIFIER:EAA3D429                         
                                     
Date/Time:Tue Dec 6 23:24:37 CST 2005               
Sequence Number: 441                           
Machine Id:00C7CD9E4C00                       
Node Id:lpar20                          
Class:S                            
Type:UNKN                           
Resource Name:LVDD                           
                                     
Description                                
PHYSICAL PARTITION MARKED STALE                      
                                     
Detail Data                                
PHYSICAL VOLUME DEVICE MAJOR/MINOR                    
0000 0000 0000 0000                            
PHYSICAL PARTITION NUMBER (DECIMAL)                    
          227                          
LOGICAL VOLUME DEVICE MAJOR/MINOR                     
8000 000A 0000 0005                            
SENSE DATA                                  
00C7 CD9E 0000 4C00 0000 0107 706A 336C 0000 0000 0000 0000 0000 0000 0000 0000
---------------------------------------------------------------------------
.
(lines ommited)
.
#

根据错误的类型,errpt -a 报告可能包含下面的信息:

LABEL——事件的预定义名称。

IDENTIFIER——事件的数值标识符。

Date/Time——事件的日期和时间。

Sequence Number——事件的唯一编号。

Machine ID——您的系统处理器单元的标识编号。

Node ID——您的系统的助记名称。

Class——错误的一般来源。可能的错误类型包括:

H——硬件。

S——软件。

——信息性消息。

U——未定的。

Type——所发生的错误的严重程度。可能的错误类型包括:

PEND——设备或组件的可用性损失是急迫的。

PERF——设备或组件的性能已下降到可接受的级别以下。

PERM——出现了不可恢复的情况。如果错误类型为这个值,那么通常是最严重的错误,并且很可能意味着出现了硬件设备或者软件模块的故障。如果错误类型为 PERM 之外的其他值,通常并不表示故障,但是对这些错误进行了记录,以便可以使用诊断程序对它们进行分析。

TEMP——在出现多次不成功的尝试之后,所恢复到的状态。这种错误类型也可以用于记录信息性条目,如 DASD 设备的数据传输统计信息。

UNKN——无法确定错误的严重程度。

INFO——错误日志条目是信息性的,并且不是某个错误所产生的结果。

Resource Name——检测到错误的资源的名称。对于软件错误,这是某个软件组件或可执行程序的名称。对于硬件错误,这是某个设备或系统组件的名称。它并不表示该组件出现故障或者需要更换。相反,它用于确定合适的诊断模块以用于对错误进行分析。

Resource Class——检测到故障的资源的一般类别(例如,磁盘的设备类别)。

Resource Type——检测到故障的资源的类型。

Location Code——设备的路径。最多可能有四个字段,分别是抽屉、插槽、连接器和端口。

VPD——关键的产品数据。这个字段的内容(如果存在)可能各不相同。设备的错误日志条目通常返回有关设备制造商、序列号、工程变更级别、以及只读存储级别的信息。

Description——错误的汇总信息。

Probable Cause——一些可能的错误原因的列表。

User Causes——由用户错误所导致错误的可能原因的列表。用户所导致的错误可能包括不正确插入的磁盘、未能开启的外部设备(如调制解调器和打印机)。

Actions——对于纠正用户所导致的错误的推荐操作的描述。

Install Causes——因为不正确的安装或者配置过程所导致错误的可能原因列表。这种类型的错误包括硬件和软件不匹配、电缆的不正确安装或电缆连接变松,以及未能正确配置的系统。

Actions——对于纠正安装所导致的错误的推荐操作的描述。

Failure Causes——可能的硬件或者软件故障列表。

Actions——对于纠正故障的推荐操作的描述。对于硬件错误,这将导致运行诊断程序。

Detailed Data——针对每个错误日志条目的、唯一的故障数据,如设备检测数据。

可以考虑下面的示例错误输出,这是运行不带任何标志的 errpt 命令的错误输出:

# errpt
IDENTIFIER TIMESTAMP T C RESOURCE_NAME DESCRIPTION          
A6DF45AA  1207112405 I O RMCdaemon   The daemon is started.    
2BFA76F6  1205155605 T S SYSPROC    SYSTEM SHUTDOWN BY USER    
9DBCFDEE  1207112305 T O errdemon    ERROR LOGGING TURNED ON    
192AC071  1205155505 T O errdemon    ERROR LOGGING TURNED OFF   
291D64C3  1202154105 I H sysplanar0   platform_dump indicator event 
BFE4C025  1202154105 P H sysplanar0   UNDETERMINED ERROR      
291D64C3  1202154105 I H sysplanar0   platform_dump indicator event 
291D64C3  1202145005 I H sysplanar0   platform_dump indicator event
EAA3D429  1202144505 U S LVDD      PHYSICAL PARTITION MARKED STALE
BFE4C025  1202144505 P H sysplanar0   UNDETERMINED ERROR
F6A86ED5  1202144105 P S ent7      SERVICE CALL FAILED
F6A86ED5  1202144105 P S ent6      SERVICE CALL FAILED
#

如果错误类别值为 H,并且错误类型值为 PERM(在这个示例中,标识符 BFE4C025 就是这种情况),则说明系统碰到了硬件问题,并且无法对其进行恢复。可能存在与这种错误类型相关联的诊断信息。

如果错误类别值为 H,并且错误类型值为 PEND,则表示因为系统检测到大量的错误,以使得某个硬件马上将变得不可用。

如果错误类别值为 S,并且错误类型值为 PERM(在这个示例中,标识符 F6A86ED5 就是这种情况),则说明系统碰到了与软件相关的问题,并且无法对其进行恢复。

如果错误类别值为 S,并且错误类型值为 TEMP,则表示系统碰到了与软件相关的问题。在经过几次尝试之后,系统能够对该问题进行恢复。

如果错误类别值为 O,则表示已经记录了一个信息性消息(在这个示例中,标识符 A6DF45AA、9DBCFDEE 和 192AC071 就是这种情况)。

当您怀疑出现了硬件问题的时候,可以使用 diag 命令来帮助查找问题。

diag 命令

diag 命令是运行各种可选的任务和服务帮助的起点。diag 使用错误日志来诊断硬件问题。

为了正确地诊断新的系统问题,系统将删除错误日志中时间超过 90 天以上的、与硬件相关的条目。系统还将删除所记录的时间超过 30 天以上的、与软件相关的条目。

说明:如果您删除了时间在 90 天以内的硬件错误条目,那么可能会限制错误日志分析的有效性。

例如,要运行问题诊断程序,可以输入下面的命令:

# diag

在“DIAGNOSTIC OPERATING INSTRUCTIONS”屏幕中,按 Enter 以继续;图 1 中显示了相应的菜单。

图 1 功能选择菜单

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

如果您选择了“Diagnostic Routines”并按 Enter,那么将显示“DIAGNOSTIC MODE SELECTION”菜单(如图 2 中所示)。

图 2 诊断模式选择菜单

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

如果您选择了“Problem Determination”,那么将对设备进行测试。在测试结束之后,系统可能向您显示如下内容:

“PREVIOUS DIAGNOSTICS RESULTS”,这意味着已经报告了一项或多项错误。

“ADDITIONAL INFORMATION”屏幕,这意味着错误日志分析已经检测到某些需要您注意的情况。

“DIAGNOSTIC SELECTION”菜单,如图 3 所示。

图 3 诊断选择

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

在“DIAGNOSTIC SELECTION”屏幕中,显示了相关设备的列表。通过将光标移动到某项资源并按 Enter,您可以选择任何资源;加号 (+) 表示选中了一项资源。通过选择某项资源并再次按 Enter,您可以取消对该资源的选择。前面加 M 表示丢失的资源,前面加 P 表示至少丢失一项路径。

在完成了所有的选择之后,按 Commit 键(F7 或者 ESC-7)。诊断程序将对所选的资源进行诊断。

监视 root 用户邮件的原因

AIX 5L 提供了一些不同的机制,以便在系统出现问题的时候及时地通知系统管理员。

下面的方法可用于查找错误消息:

检查本地 root 用户的收件箱。

检查 syslog 输出文件。请参见 8.4“附加信息的系统日志配置”。

检查 alog 输出文件。

大多数进程都会向 root 帐号发送包含详细信息的邮件。

要检查 root 用户的邮件,可以执行 mail 命令:

# mail
Mail [5.2 UCB] [AIX 5.X] Type ? for help.
"/var/spool/mail/root":1 message 1 new
>N 1 root     Tue Mar 17 17:11 24/872 "diagela message from localhost"
要阅读 diagela 消息,可以按邮件前面的数值(在这个示例中,按 1):
? 1
Message 1:
From root Wed Nov 09 17:11:48 2005
Date:Tue, 09 Nov 2005 17:11:48 -0600
From:root
To:root
Subject:diagela message from localhost
A PROBLEM WAS DETECTED ON Wed Nov 09 17:11:48 CST 2005        801014
The Service Request Number(s)/Probable Cause(s)
(causes are listed in descending order of probability):
110000AC:Power/Cooling subsystem Unrecovered Error, general.Refer to the
system service documentation for more information.
Error log information:
Date:Wed Nov 09 17:11:45 CST 2005
Sequence number: 11
Label:SCAN_ERROR_CHRP
Priority:L FRU:ACMODUL Location:
U787B.001.DNW108F
?

要退出 mail 命令,可以按 q。

Diagnostics Automatic Error Log Analysis (diagela) 提供了在记录永久硬件错误的时候进行错误日志分析的功能。它不会进行任何自动测试工作。如果诊断程序确定该错误需要一项服务操作,那么它将向您的控制台和所有的系统组发送一个消息。消息包含 SRN、或者一项纠正的操作。在 BOS 安装时,缺省情况下将禁用 diagela。

下面的示例显示了另一个 diagela 消息:

From root Tue Nov 22 15:18:46 2005
Date:Tue, 22 Nov 2005 15:18:46 -0600
From:root
To:root
Subject:diagela message from server3
A PROBLEM WAS DETECTED ON Tue Nov 22 15:18:46 CST 2005          801014
The Service Request Number(s)/Probable Cause(s)
(causes are listed in descending order of probability):
57D-129:Error log analysis indicates a SCSI bus problem.
Error log information:
Date:Tue Nov 22 15:18:39 CST 2005
Sequence number: 80
Label:DISK_ERR3
n/a       FRU:n/a         SCSI bus problem:cables,
terminators or other SCSI
devices
U787B.001.DNW108F-P1-T14-L8-L0
hdisk7      FRU:00P3833       16 Bit LVD SCSI Disk Drive
(73400 MB)
U787B.001.DNW108F-P1-T14-L8-L0
sisioa1     FRU:80P5530       PCI-X Dual Channel U320 SCSI
RAID Adapter
U787B.001.DNW108F-P1
n/a       FRU:n/a         Software
U787B.001.DNW108F-P1-T14-L8-L0

从这封邮件的内容可以看出,server3 的 U320 SCSI RAID 适配器上的 hdisk7 出现了问题。

另一个使用邮件消息的命令的示例是 crontab。因为 crontab 运行于后台,无需与用户进行交互,所以它将发送一封邮件,其中包含调度程序的输出。

示例 crontab 输出消息可能与下面的内容类似:

From daemon Wed Nov 23 11:07:01 2005
Date:Wed, 23 Nov 2005 11:07:01 -0600
From:daemon
To:root
Subject:Output from cron job /usr/sbin/nonexistingprogram, root@server3, exit status 127
Cron Environment:
SHELL =
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin
:/usr/java14/bin
CRONDIR=/var/spool/cron/crontabs
ATDIR=/var/spool/cron/atjobs
LOGNAME=root
HOME=/
Your "cron" job executed on server3 on Wed Nov 23 11:07:00 CST 2005
/usr/sbin/nonexistingprogram
produced the following output:
sh:/usr/sbin/nonexistingprogram:not found.
*****************************************************************
cron:The previous message is the standard output
and standard error of one of the cron commands.

产生这个错误消息的原因是 /usr/sbin/nonexistingprogram 不存在。

其他软件包,尤其是那些与安全性相关的软件包,可以指定具体的管理员。例如,在出现了安全性破坏、非法的文件权限更改、或者未经授权的 passwd 文件访问等情况下,系统管理员都将接收到一则消息。

系统转储工具

在发生严重错误的时候,您的系统将生成系统转储。还可以由具有 root 用户权限的用户发起系统转储。系统转储将为您系统的内存内容建立一份快照。在调试新的应用程序时,系统管理员和程序员可以生成转储,并分析其中的内容。

配置转储设备

当您安装操作系统时,将自动地为您配置转储设备。在缺省情况下,主设备是 /dev/hd6,它是一个分页逻辑卷,而辅助设备是 /dev/sysdumpnull。

说明:如果您的系统具有 4 GB 或者更多的内存,那么缺省转储设备是 /dev/lg_dumplv ,并且它是一个专门的转储设备。

可以将转储设备配置为磁带、或者硬盘上的逻辑卷,以便存储系统转储。主转储设备是一个专门的转储设备,而辅助转储设备则是共享的。

说明:如果您使用分页的设备作为转储设备,那么只能使用 hd6 ,这是主分页空间。如果您使用了可移动设备,如磁带或 DVD ,那么请注意,转储不能够跨卷;因此,转储必须仅限于单个卷。

在一个运行的系统中,可以使用 sysdumpdev 命令来更改所指定的主转储设备、或者辅助转储设备,如下面的示例所示:

要列出当前的转储目标,可以使用下面命令:

# sysdumpdev -l           
primary       /dev/hd6    
secondary      /dev/sysdumpnull
copy directory    /var/adm/ras  
forced copy flag   TRUE      
always allow dump  FALSE     
dump compression   ON       
#

下面的示例显示了将主转储设备从 /dev/hd6 更改为逻辑卷 /dev/dumpdev 的命令:

# sysdumpdev -P -p /dev/dumpdev   
primary       /dev/dumpdev  
secondary      /dev/sysdumpnull
copy directory    /var/adm/ras  
forced copy flag   TRUE      
always allow dump  TRUE      
dump compression   ON       
#

说明:您可以使用根卷组之外的转储逻辑卷,如果它不是一个永久的转储设备,例如,如果没有指定 -P 标志。然而,如果您选择分页的空间,那么除非它位于 rootvg ,否则您将无法复制该转储设备。在此过程中,系统必须复制转储设备;在分页开始之前,只有 rootvg 是活动的。

要显示有关以前的转储的统计信息,可以输入下面的命令:

# sysdumpdev -L                 
0453-039                     
                         
Device name:/dev/hd6          
Major device number: 10             
Minor device number: 2              
Size:65765888 bytes       
Uncompressed Size:643336319 bytes       
Date/Time:Mon Nov 21 10:43:09 CST 2005
Dump status:     0              
dump completed successfully           
Dump copy filename:/var/adm/ras/vmcore.3.Z   
#

增加转储设备的大小

请参考下面的部分,以便为您的转储逻辑卷确定合适的大小,以及增加逻辑卷或分页空间逻辑卷的大小。

确定转储设备的大小

进行转储所需的大小并不是一个常数值,因为系统并不转储分页空间;只有那些位于实际内存中的数据才会被进行转储。通常,可以使用分页空间逻辑卷来保存系统转储。然而,因为不完整的转储毫无用处可言,所以请按照下面的步骤执行,以确保您具有足够大的转储空间。

当发生系统转储时,将转储实际内存中内核段的所有内容(该内核段为段 0)。还将对常驻内存的用户数据(如 U 区)进行转储。

最好使用 sysdumpdev -e 命令来确定转储空间的最小大小。这将得到一个估计的转储大小,其中考虑到了系统当前所使用的内存。如果对转储进行压缩,那么这个估计值表示经过压缩后的转储的大小,而不是原始大小。通常,压缩的转储大小估计值要比实际的大小大得多。这是因为无法预计压缩算法的效率。您还应该确保,相对于所估计的大小,转储设备的容量足够大,以避免丢失转储数据。

例如,可以输入:

# sysdumpdev -e

0453-041 Estimated dump size in bytes: 120586240

#

转储设备的大小至少应该为 120586249 字节或者 115 MB。

例如,如果您需要增加主转储设备的大小,可以执行下列步骤:

1. 输入 sysdumpdev 命令,以列出各个转储设备:

# sysdumpdev -l

primary /dev/hd6

secondary /dev/sysdumpnull

。。。

#

2. 确定主转储设备的逻辑卷类型:

# lslv hd6

LOGICAL VOLUME:hd6 VOLUME GROUP:rootvg

LV IDENTIFIER:00c5e9de00004c00000001077c447899.2 PERMISSION:

read/write

VG STATE:active/complete LV STATE:opened/syncd

TYPE:paging WRITE VERIFY:off

MAX LPs:512 PP SIZE:128 megabyte(s)

3. 增加转储设备的大小:

a. 如果您已经证实了您的转储设备为分页空间(如本示例中所示),那么请参考 5.10“分页空间”。

b. 如果您已经证实了您的转储设备类型为 sysdump,那么可以使用 extendlv 命令来增加可用的空间。请参见 6.5“LVM 命令的汇总”。

启动系统转储

可以由系统或者用户来发起转储工作。

系统发起的转储

如果您的系统停止运行,并在操作员面板显示屏中出现闪烁的数值 888,则表示系统已经生成了一个转储,并将其保存到了主转储设备。

了解闪烁的 888 错误消息

如果操作员面板显示屏中出现 888 序列,则表示检测到了硬件或者软件问题,同时还提供了相关的诊断消息。

请执行下列步骤,以记录 888 序列消息中所包含的信息:

1. 等到显示 888 序列。

2. 按顺序记录 888 后面所显示的每个代码。如果系统使用了 3 位或者 4 位的操作员面板,那么您可能需要按 Reset 按钮以查看 888 后面附加的数值。有些系统使用一个 Advance 按钮以执行这项任务,或者 Increment 和 Decrement 按钮(请参见图 5)。

3. 当再次出现 888 时,停止记录。

所记录的第一个代码的值为 102,这表示在系统执行一个应用程序的过程中出现了软件或者硬件问题,如图 4 所示。值 mmm 表示停止的原因和崩溃代码(请参见表 4),而值 ddd 则表示转储状态和转储代码

图 4 意外的系统停止 - 3 位的显示屏字符串

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

崩溃代码

下面的崩溃代码是 Type 102 消息中的一部分。这些崩溃代码可以分为三种类别:

类别 1——在问题确定过程中,转储分析是首选的操作。通过软件支持来开始问题确定工作(表 1)。

类别 2——在问题确定过程中,转储分析很可能起不到什么帮助作用。通过硬件支持来开始问题确定工作(表 2)。

类别 3——在问题确定过程中,同时需要软件和硬件支持(表 3)。

表 1 类别 1 崩溃进展代码

进展代码 描述/应用程序
300 处理器数据存储中断
32x 因为 IOCC 的 IO 异常而导致的数据存储中断
38x 因为 SLA 的 I/O 异常而导致的数据存储中断
400 指令存储中断
700 程序中断

表 2 类别 2 崩溃进展代码

进展代码 描述/应用程序
200 由于内存总线错误(RAS/CAS 校验)而导致的计算机检查
201 由于内存超时而导致的计算机检查
202 由于内存卡故障而导致的计算机检查
203 由于地址异常而导致的计算机检查:地址超出范围
204 由于企图存储到 R 而导致的计算机检查
205 由于无法校正的错误校正代码,以及地址校验而导致的计算机检查
206 由于无法校正的错误校正代码而导致的计算机检查
207 由于未定义的错误而导致的计算机检查
208 由于 L2 无法校正的 ECC 而导致的计算机检查
500 因为 Scrub 内存错误而导致的外部中断
501 因为未定义的错误而导致的外部中断
51x 因为 DMA 内存总线错误而导致的外部中断
52x 外部中断
53x 因为 IOCC 总线超时而导致的外部中断
54x 因为 IOCC 键盘检查而导致的外部中断
800 浮点不可用

表 3 类别 3 崩溃进展代码

进展代码 描述/应用程序
000 异常系统中断。
558 没有足够的内存以继续 IPL。

表 4 显示了系统转储代码。

代码 描述
0c0 转储成功地完成。
0c2 转储开始。
0c3 转储被禁止。
0c4 转储完成,但是不成功。转储设备上没有足够的可用空间。部分转储可用。
0c5 转储启动失败。在尝试写入转储设备时,发生异常错误。
0c7 网络转储进行中。
0c8 转储已禁用。系统配置中没有包括转储设备。
0c9 开始系统发起的转储。

表 4

系统转储代码

当系统转储完成后,系统将停止或者重新启动,这取决于 sys0 的自动重启属性的设置:

# lsattr -El sys0 -a autorestart
autorestart true Automatically REBOOT system after a crash True
#

您可以输入下面的命令来更改这个设置:

# chdev -l sys0 -a autorestart=false
sys0 changed
# lsattr -El sys0 -a autorestart
autorestart false Automatically REBOOT system after a crash True
#

用户发起的转存

有很多种方式可以让用户发起系统转存,当然还要视当前系统的状态而定。下面介绍了这些方法:

从命令行启动系统转存

如果你从命令行启动系统转存,那么你可以使用 sysdumpstart 命令,配合 -p 标志使用是转存在主设备上,而配合 -s 标志的话将转存到辅助设备上。

从服务器的控制面板上启动系统转存

如果 HMC 设备没有和你的服务器连接,那么你可以在控制面板上初始化一个系统转存。

注意:服务器的控制面板是你对服务器初始化的接口。你可以使用它对服务器进行例如 IPL(initial program load)、服务器启动、关闭等操作。控制面板的功能范围覆盖从显示机器状体(如 IPL 的速度)的高级功能到比较低级的功能,如开机,关机等。

表 5 描述了每一个组件的功能。

图 5 展示了一种控制面板的样式

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

表 5 控制面板的各个组件

组件 功能描述
A 电源按钮
B 启动/关闭电源指示
C 型号和服务器序列号标识
D 功能和数据显示屏
E 串口 1 接口
F 电源指示灯:

闪烁的信号表示服务器已经接通了电源,但是还没有启动。

常亮的信号表述服务器已经启动,电源正常。

G 系统警告指示灯
H 减号键
I Enter 键
J 加号键

使用服务器的控制面板启动一个系统转存你可以按照下面的例子来进行操作

1.将控制面板设置为手动模式:

a.使用加号键切换到功能 02:

0 2 _ _ _ _ _ _ _ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

b.按 Enter 键启动功能 02:

c.在此按 Enter 键,移动到功能 02 的第二个字符。当前的系统运行模式将和一个箭头显示在一起。

0 2 _ _ B _ _ N < _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ P _ _ _

d.使用加号键选择系统的运行模式,并设置为 M。

0 2 _ _ B _ _ M < _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ P _ _ _

e.按 Enter 键确认选择系统模式。

f.在此按 Enter 键推出功能 02。

这时你的系统进入了手动模式。

2.使用功能 22 (分区转存功能)将分区中的操作系统数据进行转存:

a.用加号或者减号键选择功能 22。

2 2 _ _ _ _ _ _ _ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

b.按 Enter 键启动功能 22。

2 2 _ _ _ _ 0 0 _ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

c.面板的显示屏将显示转存的进度。

A 1 0 0 3 0 2 2 _ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

d.用加号或者减号键选择功能 22。

2 2 _ _ _ _ _ _ _ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

e.按 Enter 键启动功能 22。

2 2 _ _ _ _ 0 0 _ _ _ _ _ _ _ _

系统转存初始化完成。

使用特定的按键序列启动系统转存

你可以使用下面的特定的按键序列来初始化系统转存:

使用”Ctrl-Alt-小键盘 1“向主设备写入转存信息。

使用”Ctrl-Alt-小键盘 2“向辅助设备写入转存信息。

注意:系统在缺省的情况下不会在按下上面的特定按键序列后就启动系统转存。你需要执行下面的命令来实现这个功能。

# sysdumpdev -K

从 HMC 启动系统转存

为了从 HMC 初始化一个系统转存,你需要按照下面的指示进行操作:

1.在 HMC 的控制台上选中你需要转存的分区,然后点击鼠标的右键,将显示如图 6 的一个菜单。

2.点击鼠标左键,选择 Restart Partition ,然后会出现一个新的如图 7 一样的窗口。

3.在新窗口中选择 Dump 并点击 OK 来开始系统转存。

图 6 右键菜单中的 Restart Partition 选项

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

图 7 新菜单中的 Dump 选项

图 7 新菜单中的 Dump 选项

IBM AIX V5.3 系统管理(Test 222)认证指南系列,第 5 部分:问题的确定和解决(上)

复制系统转储

pax 命令允许您复制、创建和修改大于 2 GB 的文件,如系统转储,可以将它从一个地方复制到另一个地方。在迁移转储的过程中,该命令是非常有价值的,因为 tar 和 cpio 命令(在以前的 AIX 版本中,使用这两个命令来复制转储)不能处理大于 2 GB 的文件。pax 命令还可以用于查看和修改 tar 和 cpio 格式的文件。

pax 命令的语法提供了许多标志。表 6 显示了 pax 命令的常用标志。要获得各种选项的完整列表,请参考 pax 的手册页面。

表 6 pax 命令常用标志

标志 描述
-a 将文件追加到存档的末尾。
-c 匹配所有文件和存档成员,除了那些由 Pattern 参数所指定的内容之外。
-d 使正在复制、存档或提取的目录仅匹配目录本身而不是目录的内容。
-f Archive 指定用来取代标准输入(在未指定 -w 标志时)或标准输出(在指定了 -w 标志但未指定 -r 标志时)的存档文件的路径。
-i 以交互的方式对文件或者存档进行重命名。
-k 防止 pax 命令覆盖现有的文件。
-r 从标准输入读取一个存档文件。
-v 写入关于进程的信息。如果 -r 和 -w 标志均未指定,那么 -v 标志将产生详细的目录;否则,将存档成员路径名写入到标准错误。
-w 将文件以指定的存档格式写入到标准输出。
-x Format指定输出存档格式。在复制模式中,如果没有指定格式,那么在缺省情况下,pax 将使用 pax 格式。

通过使用 -x 标志,pax 命令可以以下列三种格式之一输出存档:

pax——缺省的交换格式。这种格式可以支持大于 2 GB 的文件。

cpio——扩展的 cpio 交换格式。

ustar——扩展的 tar 交换格式。

说明:如果在存档文件操作的过程中没有指定 -x 标志,那么在缺省情况下, pax 命令将输出 tar 格式的存档。

例如,要查看 tar 文件 /tmp/test.tar 中的内容,可以运行下面的命令:

# pax -vf /tmp/test.tar                    
USTAR format archive                      
-rw-r--r-- 0 root   system  344834 Nov 22 16:39 ./services
-rw-rw-r-- 0 root   system   1836 Nov 22 18:37 ./hosts  
#

要在磁带中创建一个包含两个文件的 pax 命令存档,可以运行下面的命令:

# pax -x pax -wvf /dev/rmt0 /var/adm/ras/cfglog /var/adm/ras/nimlog
/var/adm/ras/cfglog
/var/adm/ras/nimlog
#

要将 tar 文件 /tmp/test.tar 展开到当前目录,可以运行下面的命令:

# pax -rvf /tmp/test.tar
USTAR format archive  
./services       
./hosts         
#

要将文件 run.pax 复制到 /tmp 目录,可以运行下面的命令:

# pax -rw run.pax /tmp

编译和复制系统信息到媒体上

snap 命令用于收集系统的配置信息。它提供了一种简便的方法,以便将 lslpp 和 errpt 的输出发送到您的服务支持中心。它可以收集各种信息,并将信息压缩为一个 pax 文件。然后,可以将该文件写入到某个设备,如磁带或者 DVD,或者将其传输到某个远程系统。在确定和解决系统问题时,可能需要 snap 命令所收集的各种信息。

说明:执行 snap 命令需要 root 用户的权限。

表 7 显示了 snap 命令的常用标志。

表 7

标志 描述
-a 收集所有系统配置信息。这个选项大约需要 8 MB 的临时磁盘空间。
-c 创建 /tmp/ibmsupt目录树或其他指定输出目录中的所有文件的压缩 pax 映像(snap.pax.Z 文件)。
-D 收集转储和 /unix 信息。使用主转储设备。
-d Directory 标识可选的 snap 命令输出目录(/tmp/ibmsupt 是缺省目录)。
-f 收集文件系统信息。
-g 收集 lslpp -hBc 命令的输出,在重新创建正确的操作系统环境时,需要使用该命令。将输出写入到 /tmp/ibmsupt/general/lslpp.hac 文件。它还可以收集常规系统信息,并将输出写入到 /tmp/ibmsupt/general/general.snap 文件。
-k 收集内核信息。
-L 收集 LVM 信息。
-o OutputDevice 将压缩映像复制到磁盘或磁带上。
-r 从 /tmp/ibmsupt 目录中删除 snap 命令的输出。
-v Component 显示 snap 命令所执行的命令的输出。可以使用这个标志来查看指定的文件名或者文件组。

snap 命令的常用标志

snap 命令的缺省输出目录是 /tmp/ibmsupt。如果您希望指定一个可选的目录,那么可以使用 -d 选项加上所需的输出目录的路径。在执行所有的 snap 命令选项时,大约需要 8 MB 的临时磁盘空间。清除选项 -r 应该用于删除由 snap 命令所保存的信息,并重新获得磁盘空间。

例如,要将常规系统信息(包括文件系统、内核参数和转储信息)复制到 rmt0,可以输入下面的命令:

# /usr/sbin/snap -gfkD -o /dev/rmt0

说明:如果您打算使用磁带将 snap 映像发送到 IBM 以进行软件支持,那么磁带必须为下列格式之一:

8 毫米, 2.3 GB 容量

8 毫米, 5.0 GB 容量

4 毫米, 4.0 GB 容量

如果使用其他格式,将会阻碍或耽搁 IBM 软件支持部门对其中的内容进行分析。

在执行 snap -c 或者 snap -o 命令之前,应该将您的服务支持中心所需的任何附加信息复制到 /tmp/ibmsupt 目录。例如,您的服务支持中心可能要求您提供一个说明该问题的测试用例。应该将测试用例复制到 /tmp/ibmsupt/testcase 目录。在执行带 -c 或者 -o 选项的 snap 命令时,将包含相应的测试用例。

分析系统转储

kdb 命令允许您检查系统转储、或者正在运行的内核。kdb 命令解释并格式化系统的控制结构,并为检查转储提供了各种函数。

kdb 命令的语法为:

kdb [flags] [ SystemImageFile [ KernelFile [KernelModule ... ]]]

SystemImageFile 参数可用于指定包含系统映像的文件。其值可以表示系统转储、转储设备的名称、或者 /dev/pmem 特殊文件。缺省的 SystemImageFile 为 /dev/pmem。

KernelFile 参数指定 kdb 用来解析内核符号定义的 AIX 5L 内核。内核文件必须是可用的。在检查系统转储时,内核文件必须与用于获取系统转储的内核相同。KernelFile 的缺省值为 /unix。

KernelModule 参数指定 kdb 用来解析内核文件本身中未找到的符号定义的其他任何内核模块的文件名。

例如,要针对名为 /var/adm/ras/vmcore.0 的转储文件和名为 /unix 的内核文件调用 kdb 命令,可以输入下面的命令:

# kdb /var/adm/ras/vmcore.0 /unix

kdb 程序返回一个 (0)> 提示符,并等待输入一个子命令。

说明:kdb 命令使用内核文件来解析转储文件中的符号名称。在命令行中指定的内核文件必须是在创建系统转储时所运行的内核文件。

使用 alog 命令

alog 命令将读取标准输入,并同时写入到标准输出和一个日志文件。该日志文件是一个循环的、大小固定的日志。

将所有的启动消息收集到一个启动日志文件,因为在启动时,无法使用控制台。通常,将启动信息收集到 /var/adm/ras/bootlog。当您在研究启动问题的时候,可以检查 bootlog 文件,这是一种很好的做法。该文件将包含 cfgmgr 命令和 rc.boot 生成的输出。

您可以使用 alog -L 命令来显示您的系统中定义的所有日志文件。

要更改启动日志的大小,可以使用下面的命令:

# echo " boot log resizing" | alog -t boot -s 8192

要显示启动日志,可以使用下面的命令:

# alog -t boot -o|more

在示例 1 中,我们显示了 bootlog 的内容摘录。

示例 1 bootlog 中最后若干行的内容

Configuration time:12 seconds
Saving Base Customize Data to boot disk
Starting the sync daemon
Starting the error daemon
System initialization completed.
Starting Multi-user Initialization
Performing auto-varyon of Volume Groups
Activating all paging spaces
0517-075 swapon:Paging device /dev/hd6 is already active.
The current volume is:/dev/hd1
Primary superblock is valid.
The current volume is:/dev/hd10opt
Primary superblock is valid.
Performing all automatic mounts
Multi-user initialization completed
boot log resizing

在示例 2 中,我们显示了 bootlog 的内容摘录。

示例 2 bosinst 日志中最后若干行的内容

Erasing drives
Preparing target disks.
hdisk0 changed
rootvg
Making boot logical volume.
hd5
Making paging logical volumes.
hd6
Making logical volumes.
hd8
hd4
hd2
hd9var
hd3
hd1
hd10opt
Forming the jfs log.
Making file systems.
File system created successfully.
130864 kilobytes total disk space.
File system created successfully.
130864 kilobytes total disk space.
File system created successfully.
130864 kilobytes total disk space.
File system created successfully.
130864 kilobytes total disk space.
File system created successfully.
130864 kilobytes total disk space.
File system created successfully.
130864 kilobytes total disk space.
Mounting file systems.
Restoring base operating system
Initializing disk environment.
Over mounting /.
Copying Cu* to disk.
Installing additional software.
mkitab:ident entry found in /etc/inittab
Please wait...
Some locale or message software did not install.
See /var/adm/ras/devinst.log for details.
lft0 changed
Initializing trusted computing base.
Initializing dump device.
Platform dump is not supported on this system.
primary       /dev/hd6
secondary      /dev/sysdumpnull
copy directory    /var/adm/ras
forced copy flag   TRUE
always allow dump  FALSE
dump compression   ON
Creating boot image.
bosboot:Boot image is 23795 512 byte blocks.
Running Customization

为用户问题确定合适的操作

root 用户(或者安全组中的用户)可以使用几种检查命令(grpck、usrck、pwdck、sysck 和 tcbck)和列举命令(lsuser 和 lsgroup)。这些命令可以帮助您确定并修复某些有问题的用户环境。

usrck 命令

通过检查所有用户、或者由 User 参数指定的用户的定义,usrck 命令可以验证用户数据库文件中用户定义的正确性。如果指定了多个用户,那么他们的名称之间必须有一个空格。您必须选择一个标志来说明系统是否应该尝试修复错误的属性。

该命令首先检查 /etc/passwd 文件中的条目。如果您说明了系统应该修复各种错误,那么将会报告用户重名的情况,并且删除重名。仅报告重复的标识符,因为没有系统修复。如果一个条目中包含少于六个冒号分隔的字段,那么将仅报告该条目,而不对其进行修复。接下来,usrck 命令将检查其他文件中的特定用户属性。

usrck 命令将验证 /etc/passwd 文件中列出的每一个用户名在 /etc/security/user 文件、/etc/security/limits 文件和 /etc/security/passwd 文件中是否有相应的节。usrck 命令还将验证 /etc/group 文件中列出每一个组名在 /etc/security/group 文件里是否有相应的节。usrck 命令使用 -y 标志为丢失的用户名和组名在这些安全文件中创建相应的节。表 8 解释了一些常用的标志。

usrck 将验证用户定义的正确性。

表 8

标志 描述
-n 报告错误,但不对其进行修复。
-p 修复错误,但不对其进行报告。
-t 报告错误,询问是否应该进行修复。
-y 修复错误,并对其进行报告。

usrck 命令的常用标志

下面给出了一些有价值的示例:

要验证所有的用户是否存在于用户数据库中,并且报告任何错误(但不对其进行修复),可以输入下面的命令:

# usrck -n ALL

要从用户定义中删除用户数据库文件中并不存在的那些用户,并报告任何错误,可以输入下面的命令:

# usrck -y ALL

grpck 命令

通过检查所有组或由 Group 参数所指定的组的定义,grpck 命令可以验证用户数据库文件中的组定义的正确性。如果指定了多个组,那么在组与组之间必须有一个空格。

说明: grpck 命令将它的消息写入到 stderr 。

您必须选择一个标志来说明系统是否应该尝试修复错误的属性。将对下列属性进行检查:

name——检查组名称的唯一性和组成。组名称必须是等于或少于 8 个字节的唯一字符串。它不能以 +(加号)、:(冒号)、-(减号)、或者 ~(波浪符号)开头。它在字符串中不能包含冒号 (:),并且不能是关键字 ALL 或 default。系统不能修复此类错误。

groupID——检查组标识符的唯一性和组成。组标识符不能为空,而且只能由十进制数组成。系统不能修复此类错误。

users——检查在组数据库文件中列出的用户是否存在。如果您说明了系统应该修复错误,那么它将删除所有未在用户数据库文件中找到的用户。

adms——检查在组数据库文件中作为组管理员列出的用户是否存在。如果您说明了系统应该修复错误,那么它将删除所有未在用户数据库文件中找到的管理员。

admin——检查 /etc/security/group 文件中的每个组的有效管理属性。没有可用的系统修复。

表 9 显示了 grpck 命令的各种标志的汇总。

表 9

标志 描述
-n 报告错误,但不对其进行修复。
-p 修复错误,但不对其进行报告。
-t 报告错误,询问是否应该进行修复。
-y 修复错误,并对其进行报告。

grpck 命令的常用标志

下面给出了一些有价值的示例:

要验证所有的组成员和管理员是否存在于用户数据库中,并且报告任何错误(但不对其进行修复),可以输入下面的命令:

# grpck -n ALL

要验证所有的组成员和管理员是否存在于用户数据库中,并且修复错误(但不对其进行报告),可以输入下面的命令:

# grpck -p ALL

要验证为安装组所定义的组名称和组标识符是否唯一,可以输入下列命令之一:

# grpck -n install

# grpck -t install

# grpck -y install

grpck 命令并不会更正组名称和标识符。因此,-n、-t 和 -y 标志将报告组名称和标识符的问题,但不会对其进行更正。

pwdck 命令

通过检查所有用户的定义或 User 参数所指定的用户的定义,pwdck 命令可以验证用户数据库文件中密码信息的正确性。如果指定了多个用户,那么他们的名称之间必须有一个空格。

说明: pwdck 命令将其消息写入 stderr 。

您必须选择一个标志来说明系统是否应该尝试修复错误的属性。对于 /etc/passwd 文件中定义的本地用户,将检查以下属性:

entry——确保每个条目可读,并且至少包含两个 :(冒号)。如果您说明了系统应该修正错误,那么将删除整个条目。

passwd——确保密码字段是一个 !(感叹号)。如果您说明了系统应该修正错误,那么它将密码字段中的信息传输到 /etc/security/passwd 文件,更新 /etc/security/passwd 文件中的 lastupdate 属性,然后用 ! 替换 /etc/passwd 文件中的密码字段。通常,如果 /etc/security/user 文件中的 minalpha、minother 或 minlen 的密码约束被设置为非零值,则密码是必需的。

user——确保用户名是唯一的、且不超过 8 个字节的字符串。它不能以 +(加号)、:(冒号)、-(减号)、或者 ~(波浪符号)开头。它在字符串中不能包含 :(冒号),不能为关键字 ALL、default 或者 *。如果您说明了系统应该修正错误,那么它会从 /etc/passwd 文件中删除用户的条目行。如果用户名以符号 + 或 - 开头,则此用户不是本地定义的,并且不对他执行检查。

表 10 汇总了 pwdck 命令的各种不同的标志。

表 10

标志 描述
-n 报告错误,但不对其进行修复。
-p 修复错误,但不对其进行报告。
-t 报告错误,询问是否应该进行修复。
-y 修复错误,并对其进行报告。

pwdck 命令的常用标志

示例

要验证所有的本地用户是否具有有效的密码,可以输入下面的命令:

# pwdck -y ALL

这将报告相关的错误,并对其进行修复。

要确保用户 ariel 在 /etc/security/passwd 文件中具有一个有效的节,可以输入下面的命令:

# pwdck -y gpsilva

sysck 命令

sysck 命令根据从安装和更新媒体中提取的文件来检查文件定义,并更新软件重要产品数据(Software Vital Product Data,SWVPD)数据库。sysck 命令不能识别文件名中的下列特殊字符:`、'、、"、^、( )、|、{}、[]、<>、以及 :。如果文件名中包含这些字符之一,那么 sysck 命令将会失败。

sysck 命令主要在软件产品的安装和更新过程中使用。

在使用 -i 标志调用 sysck 命令时,它将根据文件定义检查抽取的文件的属性,更新 SWPCD,并试图修复文件中可能存在的错误。

File 参数是包含文件定义的节文件名。此类文件的一个示例是 /etc/security/sysck.cfg 文件,尽管 syschk 命令不使用这个文件。sysck 命令检查类型属性设置为 FILE 的文件的大小、链接、符号链接、所有者、组和方式属性。当使用 -v 标志和 -i 标志调用 sysck 命令时,它还将检查文件校验和的值。

sysck 命令更新 SWVPD 数据库中每个文件的文件名、产品名、类型、校验和以及大小。

为了修复错误,sysck 命令将已安装或更新的文件的属性重新设置为在 File 节文件中定义的值。

当使用 -u 标志调用 sysck 命令时,它将每个属于软件产品 ProductName 组成部分的文件的条目从 SWVPD 数据库中删除。sysck 命令还将按照 SWVPD 数据库中的定义删除每个文件的任何硬链接和符号链接。

表 11 对 sysck 命令的各种标志进行了汇总。

表 11

标志 描述
-f File 指定包含文件定义的节文件(stanza file)名。
-i 检查软件产品的文件是否进行了正确安装。使用文件定义更新 SWVPD 数据库,并尝试修复发现的错误。
-N 指定不应更新 SWVPD 数据库。
-O {r|s|u}指定要更新 SWVPD 的哪一部分,如下所示:

r:指定 SWVPD 的根部分。

s:指定 SWVPD 的 /usr/share 部分。

u:指定 SWVPD 的 /usr 部分(缺省)。

-R RootPath 使用 RootPath 作为根以代替“/”。
-s SaveFile 建立 VPD 中当前内容的快照,并以节格式将其保存到 SaveFile 指定的文件。用 -u 选项进行调用。使用这个标志不会对数据库进行操作。必须与 -f 选项一起使用。
-u 从 SWVPD 中删除文件条目,并删除硬链接和符号链接。
-v 验证校验和是否正确。
ProductName 指定要检查的可安装软件产品或选项。

sysck 命令的常用选项

下面给出了一些有价值的示例:

使用 installp 命令安装的产品在其映象中提供一个清单文件。要将定义添加到清单数据库,并检查权限、链接、校验和等等,可以输入下面的命令:

# sysck -i -f smart.rte.inventory smart.rte

其中 smart.rte.inventory 与如下所示类似:

/usr/bin/smart.exec:
class = apply,inventory,smart.rte
owner = bin
group = bin
mode = 555
type = FILE
size = 2744
checksum = "047203"

要删除指向已从系统中删除的产品文件的链接,并将这些文件从清单数据库中删除,可以输入下面的命令:

# sysck -u -f smart.rte.inventory smart.rte

lsgroup 和 lsuser 命令

在 SMIT 内部使用了这些命令,但是您也可以直接使用它们。当您希望将它们的输出写入到一个文件中时,直接使用它们可能更加方便。

相应的命令是:

# lsgroup -f ALL >> /tmp/check
# lsuser  -f ALL >> /tmp/check

在上面的示例中,这些命令将创建文件 /tmp/check,并将它们的输出写入到该文件中。输出的内容过多,无法直接显示在屏幕上,所以通常将输出定向到某个文件。这些命令显示有关用户和组的大部分控制信息。任何用户都可以使用这些命令,但是在由 root 用户(或者安全组中的任何成员)使用它们时,将显示更详细的信息。

在 root 用户针对某个特定的用户使用 lsuser 命令时,它将是非常有价值的:

# lsuser gpsilva
gpsilva id=203 pgrp=staff groups=staff home=/home/gpsilva shell=/usr/bin/ksh login=true
su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL
expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes=
loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1
minalpha=0 minother=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0
pwdchecks= dictionlist= fsize=2097151 cpu=-1 data=262144 stack=65536 core=2097151
rss=65536 nofiles=2000 time_last_login=1133304706 tty_last_login=ftp
host_last_login=kcyb72b unsuccessful_login_count=0 roles=

这个命令将显示多行内容,其中包含了用户 gpsilva 的控制信息。如果在使用时加上 ALL 操作数,那么将显示系统中所有用户的信息。

用户限制

/etc/security/limit 文件是一个 ASCII 文件,其中包含若干个节,分别用于指定每个用户的处理资源限制。在每个节中,通过不同的属性来设置这些限制。

每个节由用户名加上一个冒号进行标识,并且包含相关的属性(格式为 Attribute=Value)。每个属性以一个换行符结尾,并且每个节以一个附加的换行符结尾。如果您没有为用户定义属性,那么系统将应用缺省值。

当您使用 mkuser 命令创建一个用户时,系统将在 /etc/security/limit 文件中为该用户添加一个节。在有了这个节之后,您可以使用 chuser 命令来更改该用户的限制。要显示一个用户的当前限制,可以使用 lsuser 命令。要删除用户及其相应的节,可以使用 rmuser 命令。

Tags:IBM AIX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接