分类:
2009-12-04 17:05:18
要了解您的系统的硬件特征,可以使用下面的命令:
例如:
您可以使用 lsdev 命令以显示设备配置数据库中各种设备的相关信息。您可以使用这个命令以显示 ODM 中的自定义设备对象类(使用 -C 标志)、或者 ODM 中预定义设备对象类(使用 -P 标志)的信息。
lsdev 命令的一般语法规则如下所示:
lsdev -C [ -c Class ] [ -s Subclass ] [ -t Type ] [ -f File ]
[ -F Format | -r ColumnName ] [ -h ] [ -H ] [ -l Name ]
[ -S State ]
lsdev -P [-c Class ] [ -s Subclass ] [ -t Type ] [ -f File ]
[ -F Format | -r ColumnName ] [ -h ] [ -H ]
表 1 中给出了 lsdev 命令的一些常用的标志。
表 1 lsdev 命令标志
标志 | 描述 |
---|---|
-C | 列出自定义设备对象类中设备的相关信息。缺省显示信息为名称、状态、位置和描述。这个标志不能与 -P 标志一同使用。 |
-c Class | 指定设备类名。使用该标志可以限制输出到指定类中的设备。 |
-H | 显示列输出上方的头部分。 |
-h | 显示命令使用消息。 |
-P | 列出预定义设备对象类中设备的有关信息。缺省显示信息为类、类型、子类和描述。该标志不能和 -C、-l 和 -S 标志一起使用。 |
-S |
列出处于指定状态的所有设备,状态名由 State 参数指定。State 参数的值可以是以下之一:
|
下面给出了一些示例,说明如何使用 lsdev 命令列出有关系统中不同设备的信息。
列出预定义 ODM 数据库中的设备
要列出预定义设备对象类中的所有设备以及列标题,可以在命令行中输入:
lsdev -P -H
系统将显示与图 1 所示类似的输出。
列出自定义 ODM 数据库中的设备
要列出自定义设备对象类中的所有设备,可以输入:
lsdev -C -H
将显示与图 2 所示类似的输出:
列出可用的设备
要列出自定义设备对象类中处于 Available 状态的适配器,可以输入:
lsdev -C -c adapter -S a
这时将显示与图 3 所示类似的输出:
列出支持的设备
要列出系统支持的所有设备类,可以在命令行中输入:
lsdev -P -r class
这时将显示与图 4 所示类似的输出:
当 您向系统添加一个新的设备、或者需要对那些在启动过程中没有检测出的设备进行配置时,系统必须提供一种相应的方法以配置这些设备。cfgmgr 命令用于配置设备,并且有选择地将设备软件安装到系统中。要进行配置的设备由配置规则对象类(是设备配置数据库的一部分)控制。每条配置规则都指定了三项 内容:
在系统启动的过程中,cfgmgr 命令将对所需的所有设备进行配置。
cfgmgr 命令可以识别配置规则的三个阶段:
在阶段 1 中,将调用 cfgmgr 命令,并使用 -f 标志将其指定为阶段 1。cfgmgr 命令将运行所有阶段 1 的配置规则,这将对基础设备进行配置。在此之后,开始阶段 2 的执行,并使用 -s 标志调用 cfgmgr 命令。
通常,cfgmgr 命令将运行调用期间所指定的阶段的所有规则(-f 标志表示阶段 1 规则)。然而,如果使用了 -l 标志,那么 cfgmgr 命令将仅对命名的设备及其子设备进行配置。
如果在调用 cfgmgr 命令时没有使用阶段选项(例如,没有使用 -f、-s、或者 -p 标志),那么该命令将运行阶段 2 规则。要运行阶段 3 规则,唯一的方法是使用 -p 标志。
根 据在 seq 字段中指定的值,对每个阶段的配置规则进行排序。这个字段是一个整数,用于指定执行该规则的优先顺序(相对于本阶段中的其他规则)。seq 字段所指定的数值越大,其优先顺序越低;例如,如果在 seq 字段中所指定的值为 1,那么该规则将在值为 10 的规则之前执行。有一个例外的情况:如果 seq 字段的值为 0,则表示一种随意的情况,任何 seq 字段值为 0 的规则都将最后执行。
因此,如果 seq 字段值为 1,则表示最高的优先顺序(第一个运行)。
如 果对于任何设备,在配置设备时检测到没有安装设备软件,那么 cfgmgr 命令将返回一个警告消息,其中包括必须安装的设备包的名称、或者可能的设备包名称的列表。如果确定了特定的设备包名称,那么它将作为唯一的包名显示在警告 消息的下一行中。如果无法确定特定的名称,那么将在一行中显示以冒号分隔的可能包名的列表。如果检测到有多个设备没有安装设备软件,那么将为其中的每个设 备显示包名或者可能包名的列表。
请参见下面的示例:
cfgmgr:0514-621 WARNING:The following device packages are required for device support |
在这个示例中,发现有两个设备没有安装相应的软件,并且 cfgmgr 命令显示了必须安装的设备包的名称。在这个示例中,发现第三个设备也没有安装软件,cfgmgr 命令显示了几种可能的设备包名。
如 果为一个设备确定了多个可能的包名,通常只有一个名称对应于安装媒体中的设备包。这就是要安装的包。然而在有些情况下,可能有多个名称对应于安装媒体中的 设备包。在这种情况下,对于列表中的第一个包名(在安装媒体中存在一个实际的设备包),它是必须安装的包。如果使用带 -i 标志的 cfgmgr 命令,那么将安装正确的包。
如果使用 -i 标志调用 cfgmgr 命令,那么该命令将尝试自动地为每个刚检测到的设备安装设备软件。-i 标志的设备变量用于指定在何处可以找到安装媒体。安装媒体可以是硬件设备(如磁带或者磁盘驱动器)、包含安装映像的目录、或者安装映像文件本身。
在表 3 中,列出了 cfgmgr 命令的一些最常用的标志。
表 3 cfgmgr 命令标志
标志 | 描述 |
---|---|
-i Device | 指定安装媒体的位置。 |
-l Name | 指定命名的设备,以便配置该设备及其子设备。 |
-p Phase | 指定 cfgmgr 命令以运行指定的阶段。 |
-s |
指定 cfgmgr 命令以运行阶段 2 配置规则。 |
-v | 指定要写到 stdout 的细节信息的类型。 |
表 4 中给出了 cfgmgr 命令所使用的配置规则。
表 4 cfgmgr 配置规则
规则 | 描述 |
---|---|
phase | 指定该规则是否属于阶段 1、阶段 2、或者阶段 3(服务模式的第二个启动阶段)。 |
seq | 以一个整数指定该规则的相对优先顺序。 |
rule | 一个包含要运行的程序的完整路径名的字符串(还可以包含任何标志,但是它们必须跟在程序名之后,对于整个字符串的运行而言,就好像是在命令行中输入的一样)。 |
下面的示例是基于配置规则的,其中包含下面的信息:
phase seq rule |
当使用 -f 标志调用 cfgmgr 命令时,该命令将读取所有 phase = 1 的配置规则,并以下面的顺序执行它们:
/usr/lib/methods/defsys |
注意:在启动系统之后,不能使用 -f 标志。
当使用 -s 标志调用 cfgmgr 命令时,该命令将读取所有 phase = 2 的配置规则,并以下面的顺序执行它们:
/usr/lib/methods/defsys |
当使用 -p 标志调用 cfgmgr 命令时,该命令将读取所有 phase = 3 的配置规则,并以下面的顺序执行它们:
/usr/lib/methods/defsys |
如果运行不带标志的 cfgmgr 命令,那么该命令的功能与使用 -s 标志相同。要配置所检测到的、连接到 SCSI0 适配器的设备,可以使用下面的 cfgmgr 命令:
cfgmgr -l scsi0 |
要在配置过程中自动地安装设备软件(软件包含在某个目录中),可以使用下面的 cfgmgr 命令:
cfgmgr -i /usr/sys/inst.images
|
Christian Pruett, 技术支持工程师,
IBM
2008 年 2 月 14 日
本文讨论各种各样针对硬件的方法,您可以使用这些方法来确定系统中所安装的设备、记录系统错误消息,并使用这些消息来解决系统问题。同时还讨论使用系统日志来记录任何所需的消息。 本文是摘自 IBM 红皮书《IBM Certification Study Guide - pSeries AIX System Administration》。
|
要了解您的系统的硬件特征,可以使用下面的命令:
例如:
您可以使用 lsdev 命令以显示设备配置数据库中各种设备的相关信息。您可以使用这个命令以显示 ODM 中的自定义设备对象类(使用 -C 标志)、或者 ODM 中预定义设备对象类(使用 -P 标志)的信息。
lsdev 命令的一般语法规则如下所示:
lsdev -C [ -c Class ] [ -s Subclass ] [ -t Type ] [ -f File ]
[ -F Format | -r ColumnName ] [ -h ] [ -H ] [ -l Name ]
[ -S State ]
lsdev -P [-c Class ] [ -s Subclass ] [ -t Type ] [ -f File ]
[ -F Format | -r ColumnName ] [ -h ] [ -H ]
表 1 中给出了 lsdev 命令的一些常用的标志。
表 1 lsdev 命令标志
标志 | 描述 |
---|---|
-C | 列出自定义设备对象类中设备的相关信息。缺省显示信息为名称、状态、位置和描述。这个标志不能与 -P 标志一同使用。 |
-c Class | 指定设备类名。使用该标志可以限制输出到指定类中的设备。 |
-H | 显示列输出上方的头部分。 |
-h | 显示命令使用消息。 |
-P | 列出预定义设备对象类中设备的有关信息。缺省显示信息为类、类型、子类和描述。该标志不能和 -C、-l 和 -S 标志一起使用。 |
-S |
列出处于指定状态的所有设备,状态名由 State 参数指定。State 参数的值可以是以下之一:
|
下面给出了一些示例,说明如何使用 lsdev 命令列出有关系统中不同设备的信息。
列出预定义 ODM 数据库中的设备
要列出预定义设备对象类中的所有设备以及列标题,可以在命令行中输入:
lsdev -P -H
系统将显示与图 1 所示类似的输出。
列出自定义 ODM 数据库中的设备
要列出自定义设备对象类中的所有设备,可以输入:
lsdev -C -H
将显示与图 2 所示类似的输出:
列出可用的设备
要列出自定义设备对象类中处于 Available 状态的适配器,可以输入:
lsdev -C -c adapter -S a
这时将显示与图 3 所示类似的输出:
列出支持的设备
要列出系统支持的所有设备类,可以在命令行中输入:
lsdev -P -r class
这时将显示与图 4 所示类似的输出:
lsdev 命令可以获取有关您的系统中所安装的设备的一般信息;然而,您可以使用 lspv 命令找出有关您的物理卷的特定信息。
如 果没有为 lspv 命令使用任何命令标志,那么缺省的行为是提供系统中所有已知物理卷,并一同打印出物理磁盘名称、物理卷标识 (PVID)、物理卷属于哪个卷组(如果有的话)。如果您为 lspv 命令指定了一个物理卷名,那么它将仅显示有关该物理卷的信息。lspv 命令的一般语法规则如下所示:
lspv [ -l | -p | -M ] [ -n DescriptorPhysicalVolume] [-vVolumeGroupID]
PhysicalVolume
表 2 中给出了 lspv 命令最常用的两个标志。
表 2 lspv 命令标志
标志 | 描述 |
---|---|
-p | 列出物理卷中的每个物理分区的范围、状态、区域、LV 名、类型和装入点。 |
-v | VolumeGroupID 根据 VolumeGroupID 变量访问相关的信息。 |
例如,要显示您的系统中的物理卷,可以输入:
#lspv |
要显示物理卷 hdisk0 的状态和特征,可以使用下面的 lspv 命令:
lspv hdisk0
这时将显示与图 5 所示类似的输出:
要按照物理分区编号列出物理卷 hdisk0 的状态和特征,可以使用下面的 lspv 命令:
lspv -p hdisk0
这时将显示与图 6 所示类似的屏幕。
|
当 您向系统添加一个新的设备、或者需要对那些在启动过程中没有检测出的设备进行配置时,系统必须提供一种相应的方法以配置这些设备。cfgmgr 命令用于配置设备,并且有选择地将设备软件安装到系统中。要进行配置的设备由配置规则对象类(是设备配置数据库的一部分)控制。每条配置规则都指定了三项 内容:
在系统启动的过程中,cfgmgr 命令将对所需的所有设备进行配置。
cfgmgr 命令可以识别配置规则的三个阶段:
在阶段 1 中,将调用 cfgmgr 命令,并使用 -f 标志将其指定为阶段 1。cfgmgr 命令将运行所有阶段 1 的配置规则,这将对基础设备进行配置。在此之后,开始阶段 2 的执行,并使用 -s 标志调用 cfgmgr 命令。
通常,cfgmgr 命令将运行调用期间所指定的阶段的所有规则(-f 标志表示阶段 1 规则)。然而,如果使用了 -l 标志,那么 cfgmgr 命令将仅对命名的设备及其子设备进行配置。
如果在调用 cfgmgr 命令时没有使用阶段选项(例如,没有使用 -f、-s、或者 -p 标志),那么该命令将运行阶段 2 规则。要运行阶段 3 规则,唯一的方法是使用 -p 标志。
根 据在 seq 字段中指定的值,对每个阶段的配置规则进行排序。这个字段是一个整数,用于指定执行该规则的优先顺序(相对于本阶段中的其他规则)。seq 字段所指定的数值越大,其优先顺序越低;例如,如果在 seq 字段中所指定的值为 1,那么该规则将在值为 10 的规则之前执行。有一个例外的情况:如果 seq 字段的值为 0,则表示一种随意的情况,任何 seq 字段值为 0 的规则都将最后执行。
因此,如果 seq 字段值为 1,则表示最高的优先顺序(第一个运行)。
如 果对于任何设备,在配置设备时检测到没有安装设备软件,那么 cfgmgr 命令将返回一个警告消息,其中包括必须安装的设备包的名称、或者可能的设备包名称的列表。如果确定了特定的设备包名称,那么它将作为唯一的包名显示在警告 消息的下一行中。如果无法确定特定的名称,那么将在一行中显示以冒号分隔的可能包名的列表。如果检测到有多个设备没有安装设备软件,那么将为其中的每个设 备显示包名或者可能包名的列表。
请参见下面的示例:
cfgmgr:0514-621 WARNING:The following device packages are required for device support |
在这个示例中,发现有两个设备没有安装相应的软件,并且 cfgmgr 命令显示了必须安装的设备包的名称。在这个示例中,发现第三个设备也没有安装软件,cfgmgr 命令显示了几种可能的设备包名。
如 果为一个设备确定了多个可能的包名,通常只有一个名称对应于安装媒体中的设备包。这就是要安装的包。然而在有些情况下,可能有多个名称对应于安装媒体中的 设备包。在这种情况下,对于列表中的第一个包名(在安装媒体中存在一个实际的设备包),它是必须安装的包。如果使用带 -i 标志的 cfgmgr 命令,那么将安装正确的包。
如果使用 -i 标志调用 cfgmgr 命令,那么该命令将尝试自动地为每个刚检测到的设备安装设备软件。-i 标志的设备变量用于指定在何处可以找到安装媒体。安装媒体可以是硬件设备(如磁带或者磁盘驱动器)、包含安装映像的目录、或者安装映像文件本身。
在表 3 中,列出了 cfgmgr 命令的一些最常用的标志。
表 3 cfgmgr 命令标志
标志 | 描述 |
---|---|
-i Device | 指定安装媒体的位置。 |
-l Name | 指定命名的设备,以便配置该设备及其子设备。 |
-p Phase | 指定 cfgmgr 命令以运行指定的阶段。 |
-s |
指定 cfgmgr 命令以运行阶段 2 配置规则。 |
-v | 指定要写到 stdout 的细节信息的类型。 |
表 4 中给出了 cfgmgr 命令所使用的配置规则。
表 4 cfgmgr 配置规则
规则 | 描述 |
---|---|
phase | 指定该规则是否属于阶段 1、阶段 2、或者阶段 3(服务模式的第二个启动阶段)。 |
seq | 以一个整数指定该规则的相对优先顺序。 |
rule | 一个包含要运行的程序的完整路径名的字符串(还可以包含任何标志,但是它们必须跟在程序名之后,对于整个字符串的运行而言,就好像是在命令行中输入的一样)。 |
下面的示例是基于配置规则的,其中包含下面的信息:
phase seq rule |
当使用 -f 标志调用 cfgmgr 命令时,该命令将读取所有 phase = 1 的配置规则,并以下面的顺序执行它们:
/usr/lib/methods/defsys |
注意:在启动系统之后,不能使用 -f 标志。
当使用 -s 标志调用 cfgmgr 命令时,该命令将读取所有 phase = 2 的配置规则,并以下面的顺序执行它们:
/usr/lib/methods/defsys |
当使用 -p 标志调用 cfgmgr 命令时,该命令将读取所有 phase = 3 的配置规则,并以下面的顺序执行它们:
/usr/lib/methods/defsys |
如果运行不带标志的 cfgmgr 命令,那么该命令的功能与使用 -s 标志相同。要配置所检测到的、连接到 SCSI0 适配器的设备,可以使用下面的 cfgmgr 命令:
cfgmgr -l scsi0 |
要在配置过程中自动地安装设备软件(软件包含在某个目录中),可以使用下面的 cfgmgr 命令:
cfgmgr -i /usr/sys/inst.images |
|
cfgmgr 命令可以在软件级别上配置设备。您可以使用系统管理服务(System Management Services,SMS),以便在硬件级别上检查和配置系统。使用 SMS,您可以查看是否已经检测到所有可用的硬件、或者测试某个硬件是否出现了故障。
要访问 SMS 实用工具,可以使用下面操作步骤:
1. 开始时,您的计算机是关闭的。
2. 如果您的系统需要 SMS 磁盘,那么将其插入到客户端的磁盘驱动器,并打开计算机。如果您此时不插入 SMS 磁盘(而这是必需的),那么稍后将提示您插入磁盘。
3. 这时将在您的显示器下方,开始从左到右显示一些图标,请按 F1 键获得图形化的 SMS 菜单、或者按 F4 键获得 ASCII SMS 菜单。
注意:如果在显示了最后一个图标之后按 F1 或者 F4 键,那么将使用常规模式启动列表,而不是系统管理服务磁盘。
4. 这时您的屏幕上将显示 SMS 菜单。您可以根据需要对您的硬件进行测试或者配置。
您可以在 SMS 菜单中更改顾问密码,以便只有那些经过授权的人可以访问 SMS 实用工具。如果您忘记了这个密码,那么唯一的恢复方法是移除机载的系统电池。
|
RSPC 和 RS/6000 Platform Architecture (RPA) 系统可以使用下面的方法支持所连接的设备:
如果安装了设备支持软件,那么在系统启动、并且没有发现任何冲突(例如,将相同的 SCSI ID 用于两个 SCSI 设备)的情况下运行配置管理器程序 (cfgmgr) 时,将自动地配置 PCI 和 SCSI 设备。
非本机 ISA 设备必须手动地进行配置,并且您可能需要更改某些设备预定义的、或者自定义的属性值,尤其是在配置两个或者多个相同类型的 ISA 设备时。
尽 管您可以在系统中使用多个适配器,但是您却不能在相同的适配器上运行不同的设备。根据您的特定计算机的规范,可能存在各种不同的配置。例如,如果您使用了 一个 SCSI Single-Ended (SE) Ultra Controller,那么它只能连接 SE SCSI 设备,而不能连接差分设备。同样地,如果您使用了一个 100 Mbps Ethernet LAN,那么 10 Mbps 以太网卡将无法工作。
预定义的数据库、或者自定义的数据库中所包含的信息组成了设备配置数据库,它们由对象数据管理器 (ODM) 进行管理。
当 在系统启动和运行时执行配置管理器 (cfgmgr) 程序时,存储在设备配置数据库中的设备信息允许对 RISC System/6000 系统中的微通道 (microchannel) 设备和 RSPC 以及 RPA(非微通道)系统中的 PCI 设备进行自动配置。
对于非本机 ISA 设备,配置数据库的预定义部分所包含的信息数据不足以执行自动的、无冲突的 ISA 设备配置。因此,在第一次对设备进行配置时,用户需要手动地自定义 ISA 设备所使用的一些值(例如,中断级别、共享内存地址,等等)。
|
在 对系统中所有的设备进行了配置之后,您可以使用 lsattr 命令来显示给定设备或者设备类型属性的相关信息。如果您没有指定设备的逻辑名 (-l Name),那么您必须使用一个或者组合使用所有 -c Class、-s Subclass、-t Type 标志,以便唯一地标识预定义的设备。lsattr 命令的一般语法规则如下所示:
lsattr { -D [ -O ] | -E [ -O ] | -F Format } -l Name [ -a Attribute ] ...
[ -f File ] [ -h ] [ -H ]
lsattr { -D [ -O ] | -F Format } { [ -c Class ] [ -s Subclass ] [ -t Type ] }
[ -a Attribute ] ...[ -f File ] [ -h ] [ -H ]
lsattr -R { -l Name | [ -c Class ] [ -s Subclass ] [ -t Type ] } -a Attribute
[ -f File ] [ -h ] [ -H ]
在表 5 中,列出了 lsattr 命令的一些常用标志。
表 5 lsattr 命令标志
标志 | 描述 |
---|---|
-D |
在不使用 -O 标志的情况下,为某个特定的设备显示属性名、缺省值、描述和可由用户进行设置的标志值。在使用 -O 标志的情况下,-D 标志将仅显示属性名和缺省值(使用冒号的格式)。 |
-E |
在不使用 -O 标志的情况下,为某个特定的设备显示属性名、当前值、描述和可由用户进行设置的标志值。在使用 -O 标志的情况下,-E 标志将仅显示属性名和当前值(使用冒号的格式)。这个标志不能与 -c、-D、-F、-R、-s 或者 -t 标志一同使用。 |
-F Format |
以用户指定的格式显示输出。 |
-a Attribute |
显示特定设备或者设备类型的指定属性的信息。 |
-c Class |
指定设备类名。这个标志不能与 -E 或者 -l 标志一同使用。 |
-f File |
从 File 参数读取所需的标志。 |
-H |
显示列输出上方的头部分。与 -O 或者 -R 标志一同使用 -H 标志是毫无意义的;-O 或者 -R 标志将会生效。 |
-l Name |
指定要显示其属性名或者值的设备在自定义设备对象类中的设备逻辑名。 |
-O |
显示所有的属性名(以冒号进行分隔),并且在第二行中显示所有相对应的属性值(以冒号进行分隔)。 |
-R |
显示属性名合法的值。-R 标志不能与 -D、-E、-F 和 -O 标志一同使用,但是可以与 -c、-s 和 -t 标志的任意组合一同使用,以便唯一地标识预定义设备对象类中的设备,或者与 -l 标志一同使用。-R 标志将以垂直列的形式显示列属性值,如下所示: Value1 Value2 . . ValueN |
-R |
标志以 x...n(+i) 的方式显示范围属性值,其中 x 为该范围的开始,n 为该范围的结束,而 i 为增量。 |
-s Subclass |
指定设备子类名。使用该标志可以限制输出到指定子类中的设备。这个标志不能与 -E 或者 -l 标志一同使用。 |
-t Type |
指定设备类型名。使用该标志可以限制输出到指定类中的设备。这个标志不能与 -E 或者 -l 标志一同使用。 |
在显示自定义设备的属性的有效值时,将从配置数据库(而不是设备)中获取信息。
通常,数据库值反映了设备的配置方式,除非它是使用带 -P 或者 -T 标志的 chdev 命令进行配置的。如果出现了这种情况,那么在下一次系统启动之前,lsattr 命令所显示的信息可能无法正确地说明当前设备配置。
如 果您使用 -D 或者 -E 标志,那么将输出属性的名称、值、描述,以及可由用户进行设置的字符串的缺省值,除非同时还使用了 -O 标志。-O 标志将显示所有指定属性的名称(以冒号进行分隔)。在下一行中,-O 标志将显示所有相对应的属性值(以冒号进行分隔)。-H 标志可以与 -D、-E 或者 -F 标志一同使用,以便在列名的上方显示标题。在使用 -F Format 标志时,您可以将输出的格式定义为用户指定的格式,其中的 format 参数是一个括起来的列名列表(以非字母数字字符或者空白字符进行分隔)。
您可以在命令行或者指定的 file 参数中提供各种标志。下面的示例说明了 lsattr 命令的使用。
# lsattr -l rmt0 -E |
# lsattr -l rmt0 -D |
# lsattr -l scsi0 -a bus_intr_lvl -E |
# lsattr -l tty0 -a login -R |
# lsattr -El tty0 -a speed |
根据您的软件配置,您可能会看到与上面的输出不相同的命令响应。尝试对不同的设备和属性执行该命令,以便掌握它的工作方式。
|
SMIT 快速路径 smitty devices 允许您使用 SMIT 菜单界面完成下面的工作:
|
在您配置了系统中所有的设备、并将系统投入生产运行之后,您可能会在日常操作的过程中碰到与硬件相关的错误。AIX 提供了错误日志记录机制,以便在错误日志中记录硬件和软件故障。这个错误日志可用于各种信息目的、或者进行故障检测以及确定纠正性的操作。
当 操作系统模块检测到一个错误时,将开始执行错误日志记录进程。然后,代码中的错误检测段将错误信息发送到 errsave 和 errlast 内核服务或者 errlog 应用程序子例程,它们会将信息写入到 /dev/error 特殊文件。然后,这个进程将为所收集到的数据添加一个时间戳。您可以使用 errpt 命令从错误日志中检索一条错误记录。
errdemon 进程将不断地检测 /dev/error 文件中的新条目。
如果新的数据与错误记录模板存储库中的某个项目相匹配,那么该守护进程将收集来自其他系统组件的附加信息。
通常,在系统启动时将自动地启动 errdemon 命令,然而,如果它由于某种原因而中断,那么您需要重新启动它,
可以输入:
/usr/lib/errdemon
要确定您的系统的错误日志文件的路径,可以运行下面的命令:
# /usr/lib/errdemon -l |
要更改错误日志文件的最大大小,可以输入:
/usr/lib/errdemon -s 2000000 |
要更改错误日志设备驱动器的内部缓冲区的大小,可以输入:
/usr/lib/errdemon -B 16384 |
要检索错误日志中的条目,您可以使用 errpt 命令。errpt 命令将根据错误日志中的条目生成一个错误报告。它包括用于选择匹配特定标准的错误的标志。通过使用缺省情况,您可以根据错误发生和记录的顺序,以逆序的方式显示错误日志条目。
注意:errpt 命令并不执行错误日志分析;要进行分析,可以使用 diag 命令。
errpt 命令的一般语法规则如下所示:
errpt [ -a ] [ -c ] [ -d ErrorClassList ] [ -e EndDate ] [ -g ] [ -i File ]
[ -j ErrorID [ ,ErrorID ] ] | [ -k ErrorID [ ,ErrorID ]] [ -J ErrorLabel
[ ,ErrorLabel ] ] | [ -K ErrorLabel [ ,ErrorLabel ] ] [ -l SequenceNumber ]
[ -m Machine ] [ -n Node ] [-s StartDate ] [ -F FlagList ]
[ -N ResourceNameList ] [ -R ResourceTypeList ] [ -S ResourceClassList ]
[ -T ErrorTypeList ] [ -y File ] [ -z File ]
表 6 中给出了 errpt 命令最常用的一些标志。
表 6 errpt 命令标志
标志 | 描述 |
---|---|
-a |
以详细的格式显示错误日志文件中的错误信息。如果与 -t 标志结合起来使用的话,那么将显示模板文件中的所有信息。 |
-j ErrorID[,ErrorID] |
只包括由 ErrorID(错误标识符)变量指定的错误日志条目。ErrorID 变量可以用逗号 (,) 隔开,或者在双引号 ("") 中括起来,然后用逗号 (,) 或者空格字符进行分隔。 当它与 -t 标志结合在一起使用时,将在错误模板存储库中对条目进行处理。 |
-s StartDate |
指定所有在 StartDate 变量指定的日期后面的记录,其中 StartDate 变量的形式为 mmddhhmmyy(月、日、小时、分和年)。 |
-t |
处理错误记录模板存储库而不是错误日志。-t 标志可以用来以报表的形式查看错误记录模板。 |
-F FlagList |
根据该模板的 Alert、Log 或者 Report 字段的值来选择错误记录模板。 |
-J ErrorLabel |
包括由 ErrorLabel 变量指定的错误日志记录。 |
下面的部分介绍了一些使用 errpt 命令的示例。
以汇总的形式显示错误
要显示到现在为止所碰到的错误的完整汇总报告,可以在命令行中使用下面的 errpt 命令:
# errpt |
显示错误细节信息
要为系统中碰到的所有错误显示详细的报告,可以使用下面的 errpt 命令:
# errpt -a |
根据时间基准来显示错误
如果您怀疑前一天可能碰到了一些错误,那么您可以为过去 24 小时中所记录的所有错误显示一个详细的报告,其中字符串等于当前月、日、小时、分和年减去 24 小时。要完成这个任务,可以使用下面的 errpt 命令:
# date |
errlogger 命令允许您将操作员消息记录到系统错误日志。这些消息在长度上最大可达 1024 个字节。
在下面的示例中,显示了 errlogger 命令的使用及其输出。
# errlogger Testing use of errlogger command |
除了 errpt 命令之外,还可以将下面的命令与 errpt 命令一同使用,以便查找硬件错误,并对错误日志记录机制所报告的任何问题采取纠正措施:
errclear 删除错误日志中的条目。
errinstall 安装错误日志记录消息集中的消息。
errupdate 更新错误记录模板存储库。
|
diag 命令是运行各种可选的任务和服务帮助的起点,以便帮助进行硬件问题确定。diag 命令提供了一个菜单驱动的界面,但是也可以使用命令行标志以执行各种特定的任务。
如果您怀疑出现了问题,可以使用下面的步骤进行诊断。
1. 运行 diag 命令。
2. 按 Enter 以跳过信息屏幕。
3. 选择“Diagnostic Routines”。
4. 选择“Problem Determination”。
这将指导 diag 命令对系统进行测试,并对错误日志进行分析。
图 7 显示了对存在一个问题的系统运行诊断任务所得到的结果。
另外,如果您怀疑 sysplanar0 设备出现了问题,可以使用 diag -d sysplanar0 -v -e 命令来执行相同的诊断任务。
|
为了记录系统消息,AIX 使用了 syslogd。syslogd 守护进程读取数据报套接字,并将每行消息发送到 /etc/syslog.conf 配置文件所描述的目标。syslogd 守护进程将在被激活和收到挂起信号时读取该配置文件。
syslogd 守护进程创建 /etc/syslog.pid 文件。此文件包含单行内容,其中带有 syslogd 守护进程的命令进程 ID。它用于结束或者重新配置 syslogd 守护进程。
发送到 syslogd 守护进程的终止信号将结束该守护进程。syslogd 守护进程记录结束信号信息并立即终止。
每个消息为一行。消息可以包含优先级代码,此代码由位于行首的尖括号 (< >) 中包含的数字来标记。可能会对长度超过 900 个字节的消息进行截断。
/usr/include/sys/syslog.h 包含文件定义配置文件使用的功能和优先级代码。本地编写的应用程序使用 syslog.h 文件中包含的定义,从而通过 syslogd 守护进程记录消息。
syslogd 命令的一般语法规则如下所示:
syslogd [ -d ] [ -s ] [ -f ConfigurationFile ] [ -m MarkInterval ] [-r]
表 7 中给出了在启动 syslogd 时的一些常用标志。
表 7 syslogd 守护进程标志
标志 | 描述 |
---|---|
-d | 打开调试。 |
-f Config File |
指定替代的配置文件。 |
-m MarkInterval | 指定标记命令消息之间相隔的分钟数。如果不使用此标志,那么标记命令将每隔 20 分钟发送一条优先级为 LOG_INFO 的消息。包含一个 *(星号)的选择器字段将禁用此功能,此选择器字段将选择所有其他功能。 |
-s | 指定为本地系统上生成的所有转发 syslogd 消息转发一条缩短的消息到另一个系统(如果作此配置的话)。 |
-r | 禁止对从远程主机收到的消息进行日志记录。 |
syslogd 守护进程使用一个配置文件,以根据消息的优先级和生成消息的功能来确定将系统消息发送到何处。在缺省情况下,syslogd 读取缺省配置文件 /etc/syslog.conf,但是如果指定了 -f 标志,则可以指定替代的配置文件。
/etc/syslog.conf 文件可以控制 syslogd 守护进程的行为。例如,syslogd 使用 /etc/syslog.conf 文件确定将错误消息发送到何处,或如何对不同的系统事件作出反应。下面显示了缺省 /etc/syslog.conf 文件的一部分。
/etc/syslog.conf - control output of syslogd |
除了包含 syslogd 守护进程设置的 /etc/syslog.conf 文件外,/etc/syslog.pid 文件还包含正在运行的 syslogd 守护进程的进程 ID。
本部分描述了 /etc/syslog.conf 文件的格式,以及如何解释此文件中的不同条目。syslogd 守护进程配置文件中的行包含一个选择器字段(selector field)和一个操作字段(action field),两者之间由一个或多个制表符分隔。
选择器字段指定功能和优先级。功能名称之间用逗号 (,) 分隔,选择器的功能和优先级部分之间用句点 (.) 分隔,同一选择器字段中的多个条目之间用分号 (;) 分隔。要选择所有功能,可以使用一个星号 (*)。
操作字段确定要接收消息的目标(文件、主机或用户)。如果将消息发送到远程主机,远程系统将按照自己的配置文件中的指示来处理消息。要在用户的终端上显示消息,目标字段必须包含一个有效的、已登录系统用户的名称。
功能
表 8 列出了 /etc/syslog.conf 文件中使用的部分功能。可以在选择器字段中使用这些系统功能名称。
表 8 /etc/syslog.conf 文件中使用的功能
功能 | 描述 |
---|---|
kern | 内核 |
uesr | 用户级别 |
邮件子系统 | |
daemon | 系统守护进程 |
auth | 安全或者授权 |
syslog | syslogd 守护进程 |
lpr | 行式打印机子系统 |
news | 新闻子系统 |
uucp | uucp 子系统 |
* | 所有功能 |
优先级
表 9 列出了 /etc/syslog.conf 文件中使用的优先级。您可以在选择器字段中使用这些消息优先级。指定优先级和所有更高优先级的消息均按指示进行发送。
表 9 /etc/syslog.conf 文件的优先级
优先级 | 描述 |
---|---|
emerg | 指定紧急消息 (LOG_EMERG)。这些消息不分发给所有用户。可以将 LOG_EMERG 优先级的消息记录到单独的文件中以便检查。 |
alert | 指定重要的消息 (LOG_ALERT),如严重硬件错误。这些消息将分发给所有用户。 |
crit | 指定未分类为错误的关键消息 (LOG_CRIT),如不正确的登录尝试。LOG_CRIT 和更高优先级的消息将发送给系统控制台。 |
err | 指定表示错误情况的消息 (LOG_ERR),如不成功的磁盘写操作。 |
warning | 指定表示异常但可恢复的情况的消息 (LOG_WARNING)。 |
notice |
指定重要的信息性消息 (LOG_NOTICE)。 没有指定优先级的消息将映射为此优先级。 这些消息比信息性消息更重要,但比警告消息低。 |
info | 指定信息性消息 (LOG_INFO)。这些消息可以丢弃,但是在分析系统时很有用。 |
debug | 指定调试消息 (LOG_DEBUG)。这些消息可以丢弃。 |
none | 排除选定的功能。仅当在同一选择器字段中的前面有一个带 *(星号)的条目时,此优先级才有用。 |
目标
表 10 列出了 /etc/syslog.conf 文件中使用的一些目标。
您可以在操作字段中使用这些消息目标。
表 10 /etc/syslog.conf 文件的目标描述
目标 | 描述 |
---|---|
File Name | 以追加模式打开的文件的完整路径名称。 |
@Host | 主机名称,前面有一个 @ 符号。 |
User[, User][...] | 用户名。 |
* | 所有用户。 |
要 自定义 /etc/syslog.conf 文件以便满足所需的条件,应该通过编辑 /etc/syslog.conf 文件来更新系统日志。在编辑 /etc/syslog.conf 文件并向其添加自己的行以后,您需要重新启动 syslogd 守护进程。您可以运行以下命令来完成这项任务:
1. 检查以确定 syslogd 守护进程的进程 ID。在此例中,该进程 ID 是 5426。
# ps -ef | grep syslogd |
2. 使用 stopsrc 命令终止 syslogd 守护进程,如下所示:
# stopsrc -s syslogd |
3. 检查 syslogd 守护进程是否已成功终止。
# ps -ef | grep syslogd |
4. 重新启动 syslogd 守护进程。
# startsrc -s syslogd |
下面是 /etc/syslog.conf 文件用法的几个示例。
mail.debug /tmp/mailsyslog
其中:
*.debug;mail.none @rigil
其中:
*.emerg;mail,daemon.crit nick, jam
其中:
mail.debug *
其中:
3151 显示器可以直接连接、或者通过调制解调器连接到 AIX 系统。
可 以使用一个本机串行端口(如图 8 所示)、或者通过异步适配器(图 9 所示)建立到 AIX 系统的连接。另外,可以将打印机连接到 3151 显示器,AIX 支持将打印机作为连接到终端的打印设备 (Terminal Attached Printing),如图 9 所示。
要添加一个 TTY,可以使用下面的操作方法:
1. 执行 smitty tty,并选择“Add a TTY”或者执行 smitty maktty。
2. 系统将提示您输入 TTY 类型和父适配器。从列表中选择正确的值,然后按 Enter。
这时将显示与图 10 所示类似的屏幕:
3. 在 PORT number 字段中,选择您希望将这个 TTY 添加到的端口号。对于 RAN,请按照位置代码规则以选择合适的端口号。
4. 将 TERMINAL Type 字段更改为您所使用的终端的类型。这个字段非常重要,因为如果不能正确地设置这个字段,您可能无法使用终端上所有的键。TERM 环境变量可以存储这个设置。通过使用您的 TERM 环境变量、并使用 export 命令存储您希望使用的终端仿真,您可以更改终端仿真设置。例如,要使用 ibm3151 终端仿真,可以使用下面的命令:
TERM=ibm3151; export TERM
5. 设置线路速度和终端的通信类型(1/8/N 或者 1/7/E),然后按 Enter。
这将在 /dev 目录中创建一个设备特殊文件,并向 /etc/inittab 文件添加一个条目(对您的终端运行 getty 进程),以便您的终端在系统启动时是可用的。它还将为您刚添加的终端向自定义 ODM (CuDv) 数据库添加另一个条目。
您还可以直接在命令行中添加 TTY。要添加一个使用适配器 sa0 和端口 s1 的 ibm3151 RS232 终端,并且支持登录,那么可以使用下面的命令:
mkdev -c tty -t tty -s rs232 -p sa0 -w s1 -a login=enable -a term=ibm3151
您可以使用下面的命令删除终端:
rmdev -l tty_name -d |
其中,可以通过使用命令 tty、或者列出所有的 TTY 然后选择希望删除的 tty,从而确定 tty_name。
在 ASCII 终端中,按如下所示设置通信选项: |
注意:如果您的终端是 IBM 3151、3161 或者 3164,那么请按 Ctrl+Setup 键以显示设置菜单,并按照屏幕上的指示对这些字段进行设置。
如果您使用的是一些其他的 ASCII 终端,那么请参考合适的文档,以了解如何对这些字段进行设置。