AIX命令参考大全,卷 2,d - h - errupdate 命令

[ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]

AIX命令参考大全,卷 2,d - h

errupdate 命令

用途

更新错误记录模板库。

语法

errupdate [ -c] [ -f] [ -h] [ -n] [ -p] [ -q] [ -yFileName] [ File ]

描述

errupdate 命令在错误记录模板库中增加或者删除记录,或者修改日志、报表,或者对现存记录的特征发出警报。 errupdate 命令从指定的 File 参数中读入。如果 File 参数没有指定的话, errupdate 命令从标准输入读入并写到标准输出。

每个要增加、删除或者修改的记录必须前面有一个运算符。有效的运算符为:

+ 增加一个记录(加号)。
- 删除一个记录(删除运算符)。
= 修改日志、报表或者提醒记录的特征。

在输入文件中的记录必须由一个空行隔开。

在输入文件中的注释可以放置在模板之间,在第一列要用 *(星号)来表示。

如果 《X/Open 可移植性指南,发行版 4》 消息在错误模板中用到的话,则必须指定一个消息编目。这可以用这样一行来完成:

<*!catalog-name>

示例

*!mycat.cat

指定的目录应用于在后面的模板中找到的 XPG4 消息,直到遇到另一个“*!”目录说明符。并且,“*!”说明符可以基于单个模板用“catname”关键字覆盖。

除非有到该目录的完整路径被指定,否则要遵守检索信息目录的一般规则。例如,在上面的示例中,mycat.cat 假定是在 /usr/lib/nls/msg/%L 中。

要增加的记录必须以特定的格式定义。错误记录模板的一般形式是:

Error Record Template
 
        + LABEL:
                         Comment=
                         Class=
                         Log=
                         Report=
                         Alert=
                         Err_Type=
                         Err_Desc=
                         Prob_Causes=
                         User_Causes=
                         User_Actions=
                         Inst_Causes=
                         Inst_Actions=
                         Fail_Causes=
                         Fail_Actions=
                         Detail_Data= <data_len>, <data_id>,
                         <data_encoding>

另外XPG4 消息的目录名可以用下面的来指定:

catname = <catalog>

任何包含 XPG4 消息、catname 关键字和多于 8 个的详细数据项的模板将会被当作一个 XPG4 模板。XPG4模板是不可提醒的,并且使用了一个稍微不同的错误标识计算方法。

错误记录模板字段的描述如下:

Alert 表示错误日志记录可以被与 SNA 一般警告结构符合的产品处理。Alert 字段可以被设置成真或假。如果该字段从模板中省略,它的值会缺省为 False。如果 Alert 字段设置为 True,则 errupdate 命令不会添加模板,除非 Err_DescInst_ActionsFail_Cause, Fail_ActionsDetail_Data data_id 字段的内容是 SNA Generic Alert Architecture(在 GA27-3136 出版物中)认可的值。如果这些值中的任意一个不被 SNA 一般警告结构识别或者该模板是一个 XPG4 模板,并且 Alert 字段被设置成真的话,那么 -p 标志必须被指定,才能增加或者更新模板。
Class 描述错误是发生在硬件还是在软件上,是一种操作程序消息还是没有确定的消息。下列类描述符中的一个必须被指定:
H
表示错误是硬件故障。
O
表示错误是操作程序消息。
S
表示错误是软件故障。
U
表示错误没有确定。

Comment 将注释指定成包括在 #define 语句中,该语句是为错误标识信息集创建的。注释不准超过 40 个字符,必须用双引号括起来。超过 40 个字符的注释会自动被截掉。 errupdate 命令将注释包括在 C 语言的注释定界符内,/* (斜杠,星号)和 */ (星号,斜杠)。
Detail_Data 描述详细数据,如检测模块名称、检测数据或返回代码,它们是在错误发生时随错误一起记录下来的。如果没有详细数据同错误一起被记录下的话,则这个字段可以空着,或者通过将 data_len 的值指定为 0 来从详细数据 ID 消息集中显示一条消息。对于每个 Detail_Data 字段需要下面三个值,它们之间必须用逗号隔开:
data_len
data_id 值相关的数据的字节数目。data_len 值被解释成一个十进制值。要想指定与环境有关的大小,请使用“W”。如果错误是从64位环境下记录下来的话那么“W”将被当作是 8 个字节,否则当作是 4 个字节。

注意:在详细数据长度计算的过程中,每个“W”都被当作是8个字节,并且是不区分大小写的。
data_id
从详细数据 ID 消息集合 『D』 中识别一个文本消息,在该详细数据的前面的错误报表中打印出来。这个值被解释成一个无符号的十六进制数,长度最多可到 4 位。
data_encoding
描述了详细数据是如何在错误报表中打印出来的。有效的值为:
ALPHA
该详细数据是一个可打印的 ASCII 字符串。
DEC
该详细数据为一个整数值的二进制表示,并且要打印的是与其相当的十进制值。
LDEC
该详细数据为一个 64 位值的二进制表示,并且要打印的是与其相当的十进制数。/defn>
HEX
该详细数据要以十六进制数的形式打印。

每个模板最多可以指定 16 个 Detail_Data 记录。与错误一起记录的数据量不能超过 /usr/include/sys/err_rec.h 文件中的 ERR_REC_MAX。不能包含在错误日志记录中的错误数据应该保存在其它地方。在错误日志记录中的详细数据应该包含那些可以将错误数据和错误日志记录关连起来的信息。

Err_Desc 描述了已经发生的错误。错误描述消息标识符必须在该字段中被指定。这个值会从错误描述消息集合“E”中识别出一个文本消息,这个消息在该错误发生时会显示出来。该值被解释成一个无符号的十六进制数,长度最多 4 位。该字段还可以指定一个T XPG4 样式的消息。这在以后再讨论。
Err_Type 描述已经发生的错误的严重性。下列值中的一个必须被指定:
PERF
设备或组件的性能已经降低到可接受的水平以下的条件(性能)。
PERM
不能恢复的条件(永久性)。
PEND
表示设备或组件的可用性的损失已经很危急的条件(迫切的)。/defn>
TEMP
从许多次不成功的尝试之后恢复过来的条件(临时的)。/defn>
UNKN
不可能确定错误的严重性时的条件(未知的)。
INFO
信息错误日志记录的条件。

Fail_Actions 描述了推荐的用于纠正一个由于故障原因导致的错误的操作。可以指定一个最多有四个推荐操作消息标识符的列表,用逗号隔开。该值从推荐操作消息集合 『R』 中识别一个文本消息,在错误发生时显示出来。该值被解释成一个无符号的十六进制数,长度最大 4 位。这个字段必须为空,如果 Fail_Causes 字段为空的话。

推荐操作列出的顺序要根据操作纠正错误的可能性以及代价来确定。永远都要将那些对系统有很小或者没有代价(很小,或者没有影响)的操作列在第一位。接下来列出那些纠正错误的可能性相等或者近似相等的操作,将最小代价的操作先列出来。按照可能性递减的顺序列出余下的操作。该字段还可以指定一个 XPG4 样式的消息。这会在以后再讨论。

Fail_Causes 描述了已经发生的错误的故障原因。故障原因定义成一个由资源失败而导致的条件。这个字段可以最多列出四个故障原因消息标识符,用逗号隔开。这个值会从故障原因消息集合 『F』 中指定一条文本消息,这个消息会在错误发生时被显示出来。该值被解释成一个无符号的十六进制数,长度最多 4 位。按照可能性递减的顺序列出故障原因。这个字段可以空着,如果它没有应用到已经发生的错误上的话。如果该字段为空,那么 User_Causes 或者 Inst_Causes 字段不准为空。该字段还可以指定一个 XPG4 样式的消息。这在以后再讨论。
Inst_Actions 描述了纠正一个安装导致的错误的推荐操作。这个字段可以列出最多 4 个推荐操作消息标识符,用逗号隔开。该值从推荐操作消息集合 『R』 中指定一个文本消息,在错误发生时显示出来。该值被解释成一个无符号的十六进制数,长度最大 4 位。这个字段必须为空,如果 Inst_Causes 字段为空的话。推荐操作被列出的顺序要根据该操作的代价以及该操作纠正错误的可能性来确定。那些代价很少或者没有代价,或者对系统影响很小或者没有影响的操作总是要首先列出来。其次要列出纠正错误的可能性相等或近似相等的操作,其中最小代价的操作在先。剩下的操作应该按照可能性递减的顺序列出来。该字段还可以指定一个 XPG4 样式的消息。这在以后再讨论。
Inst_Causes 描述了已经发生的错误的安装原因。安装原因被定义成由资源的初始化安装或者设置导致的条件。最多可以指定四个安装原因消息标识符,用逗号隔开。该值从安装原因消息集合 『I』 中指定一条文本消息,在错误发生的时候显示出来。该值被解释成一个无符号的十六进制数,长度最大 4 位。安装原因应按概率递减的顺序列出。该字段可以空着,如果它对已经发生的这个错误不适用的话。如果该字段空着,User_CausesFail_Causes 字段必须非空。该字段还可以指定一个 XPG4 样式的消息。这在以后再讨论。
LABEL 指定一个最多 19 个字符的唯一的标签,它必须对每个错误记录模板都提供。一个包含了 『 #define #ERRID_label Error_ID 』(这里 Error_ID 值为分配给错误记录模板的唯一 ID 值)的字符串会写到标准输出中去,如果 -h 标志在该命令行中被指定的话。
Log 指定当错误发生时是否应该为该错误创建一个错误日志记录。日志字段可以设置成真或假。如果该字段从模板中省略的话,它的值会缺省成真。当该字段被设置成假的话, Report Alert 字段会被忽略。
Prob_Causes 描述了已经发生的错误的1个或多个可能的原因。可以指定一个最多4个可能原因消息标识符列表,以逗号隔开。该值会从可能原因消息集合 『P』 中指定一条文本消息,在错误发生时显示出来。该值被解释成一个无符号的十六进制数,长度最多 4 位。可能原因应该按照可能性递减的顺序列出。最少需要有一个可能的原因。该字段还可以指定一个 XPG4 样式的消息。这在以后再讨论。
Report 指定记录下来的错误的发生在错误报表打印时是否应该报告。 Report 字段可以设置成真或假。如果该字段从模板省略,其值将缺省为真。
User_Actions 描述了纠正用户导致的错误的推荐操作。可以指定一个最多有四个推荐操作消息标识符的列表,用逗号隔开。该值从推荐操作消息集合 『R』 中指定一个文本消息,在错误发生时显示出来。该值被解释成一个无符号的十六进制数,长度最多 4 位。该字段必须空着,如果 User_Causes 字段空着的话。推荐操作列出的顺序要由该错误的代价和该操作纠正错误的可能性来确定。那些成本很少或者没有成本、对系统影响很小或者没有影响的操作总是应该首先列出。其次要列出纠正错误的可能性相等或近似相等的操作,其中最小代价的操作在先。剩下的操作应该按照可能性递减的顺序列出来。该字段还可以指定一个 XPG4 样式的消息。这在以后会讨论。
User_Causes 描述了已经发生的错误的用户原因。用户原因定义成无需与服务机构联系就能纠正的情况。可以指定一个最多有 4 个用户原因的消息标识符的列表,之间用逗号隔开。该值从用户原因消息集合 『U』 中指定一条文本消息,在错误发生的时候显示出来。该值被解释成一个无符号的十六进制数,长度最大 4 位。用户原因应该按照可能性递减的顺序列出。该字段可以空着,如果它对已经发生的这个错误不适用的话。如果该字段空着,那么 Inst_Causes 或者 Fail_Causes 字段必须是非空的。该字段还可以指定一个 XPG4 样式的消息。这在以后再讨论。

catname 用来为当前的模板指定一个用来检索 XPG4 消息的消息目录。它会覆盖由前面的“"*!”目录标识符指定的目录。任何包含了 XPG4 消息的模板必须有一个用 catname 或者“*!”指定的目录. 目录名称必须用引号括起来。除非指定了该目录的完整路径,否则要遵守检索消息目录的一般规则。

例如,如果

catname = "mycat.cat"

被指定的话,mycat.cat 就假定是在 /usr/lib/nls/msg/%L 中。

错误描述、可能的原因、用户原因、安装原因、故障原因、推荐操作和详细数据 ID 消息必须要么是在错误日志消息目录中保持的一个错误消息标识符,要么是一个XPG4消息。

错误消息标识符包含最多四位的十六进制数,前面没有 "Ox"。例如,1234 或者 ABCD。errmsg -w 命令可以用来将这些消息同它们的标识符一起打印。errmsg 命令可以用来增加新的消息。

XPG4 消息是通过这种形式来指定的:

{<set>, <number>, <"default text">}

集合、编号和缺省文本都是需要的。不支持符号消息引用。另外,包含了 XPG4 消息的模板是不可警告的。

必须为 XPG4 消息指定一个消息目录。这通过“*!”目录说明符或 catname 关键字完成。

错误记录不支持一般错误消息的全部功能。在错误日志模板中使用的字符串必须符合某些限制。

对每个增加进来的条目,errupdate 命令都指定了一个唯一的错误 ID,该 ID 被写入到由 File.h 指定的头文件中(这里 File 参数是 errupdate 命令的输入文件)。如果 errupdate 命令从标准输入中读入的话, #define 语句写到标准输出中。由 Class , Err_Desc , Err_Type , Fail_Actions , Fail_Causes , Inst_Actions , Inst_Causes , Prob_Causes , User_Actions , User_Causes 字段提供的值和 Detail_Datadata_id 的值用来计算该错误的唯一错误 ID 号。对于 XPG4 模板,该标签也包括在计算中。

Log ReportAlert 字段的内容不包括在唯一错误 ID 的计算之中;因此特定错误的日志、报表和警告特征可以在任何时候在存储在错误记录模板库中的错误记录定义中进行修改,用 errupdate 命令来实现。还要注意详细数据字段的 data_len 和 data_encode 部分没有使用到。

errupdate 命令还在名为 File.undo 的当前目录中创建了一个撤消文件。如果 errupdate 命令是从标准输入中读入的话 undo 文件就被写入到 errids.undo 文件中。undo 文件包含了 errupdate 命令的输入,用来撤消 errupdate 命令已经作出的改动。

errpt -t 命令可以用来查看错误记录模板库中的内容。该模板由于会在实际错误报表中出现,因此会被处理和打印。

注意:如果您改变了错误模板,请注意这些模板可能会被后续的更新所改变。您应该保存一个所有进行的改动的记录,当您的系统被更新的时候重新进行这些改动。这种情况只有在进行了一些主要的系统更新如移动到一个新的操作系统级别等之后才有必要。还有,如果您重新安装,这样一个记录会允许您改变您的模板。保存这样的记录的最简单的方式就是让您的模板修改总是在同一个 errupdate 源文件进行。

标志

-c 检测输入文件有无语法错误。
-f 强制所有的模板进行更新,包括那些错误 ID 与输入模板中的相同的模板。
-h 为每个分配给错误模板的错误 ID 创建一个 #define 语句。如果在命令行中提供了一个文件名的话,那么头文件就是那个提供的文件名后面带上 .h。否则, #define 语句就被写入到标准输出。
n 禁止将错误记录模板增加到错误记录模板库中。
-p Alert 字段设置成真来对模板进行添加或者更新,该模板包含了错误描述、可能原因、用户原因、用户操作、安装原因、安装操作、故障原因、故障操作或者不被 SNA 一般警告结构(在出版物 GA27-3136 中)所承认的详细数据 ID 值。errupdate 命令将不会让您对模板增加这些特征,除非您指定了这个标志。
-q 禁止撤消文件的创建。
-y FileName 使用 FileName 参数指定的错误记录模板文件。

安全性

访问控制:无,但是对于要更改的模板文件(缺省情况下为 /var/adm/ras/errtmplt),您必须具有写权限。

实例

  1. 要想增加一个记录,请在输入文件中按下面的方式定义该记录:

    + CDROM_ERR22:
            Comment=        『Temporary CDROM read error』
            Class=  H
            Log=            True
            Report= True
            Report= True
            Alert=          False
             Err_Type=       TEMP
            Err_Desc=       E801
            Prob_Causes=    5004
            Fail_Causes=    E800, 6312
            Fail_Actions=   1601, 0000
            Detail_Data=    120, 11, HEX
            Detail_Data=    4, 8058, DEC
            Detail_Data=    4, 8059, DEC

    要输入数据,

    errupdate <input file>
  2. 要想修改 99999999 记录的日志、报表和警告特征,请指定在唯一错误 ID 前面的修改运算符 =(等号)及该记录要被修改的新特征:

    errupdate
     =99999999:
     Report = False
     Log = True
  3. 要想从错误记录模板库中删除 99999999 记录的话,请指定在要删除的记录唯一错误 ID 前面的删除运算符 -(负号):

    errupdate
     -99999999:
  4. 要用“*!”覆盖为该输入流指定的 XPG4 消息编目,请使用“catname”关键字。

    *!mycat.cat

    * mycat.cat 从现在起就用在所有的 XPG4 消息上了。

    *除了这个:

    + CDROM_ERR23:
             Comment=        "Temporary CDROM read error"
             catname= "othercat.cat"
             Class=  H
             Log=            True
             Report= True
             Report= True
             Alert=          False
             Err_Type=       TEMP
             Err_Desc=       {1, 1, "CD ROM is broken"}
             Prob_Causes=    {2, 1, "cause 1"},\
                            {2, 2, "Cause 2"}
             Fail_Causes=    E800, 6312
             Fail_Actions=   1601, 0000
             Detail_Data=    120, 11, HEX
             Detail_Data=    4, 8058, DEC
             Detail_Data=    4, 8059, DEC

目录 othercat.cat 将会被只用作 CDROM_ERR23 模板。

注意:模板可以包含 XPG4 消息和传统的错误 ID 或代码点。

文件

/usr/include/sys/errids.h 包含了包含错误 ID 的头文件。
/usr/include/sys/err_rec.h 包含了含有记录错误的结构的头文件。

相关信息

errclear 命令、errdead 命令、errinstall 命令、errlogger 命令、errmsg 命令、errpt 命令和 errstop 命令。

errdemon 守护进程。

errsave 内核服务。

errlog子例程。

AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Error Logging Overview

[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]