errupdate 命令

用途

更新错误记录模板库。

语法

errupdate [ -c ] [ -f ] [ -h ] [ -n ] [ -p ] [ -q ] [ -yFileName ][ 文件 ]

描述

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字段可以设置为 True 或 False。 如果从模板中省略此字段,那么其值将缺省为 False。 如果Alert字段设置为 True ,那么 错误更新 命令不会添加模板,除非该模板的内容 Err_Desc, Inst_Actions, Fail_Cause, Fail_Actions Detail_Data data_id字段是 SNA 通用警报体系结构 (在出版物 GA27-3136中) 识别的值。 如果所使用的任何值未被 SNA 通用警报体系结构识别,或者该模板是 XPG4 模板,那么 Alert字段设置为 True 时,必须指定 -p 标志以添加或更新模板。
Class 描述错误是发生在硬件还是在软件上,是一种操作程序消息还是没有确定的消息。 以下类描述符中的一个必须被指定:
H
表示错误是硬件故障。
O
表示错误是操作程序消息。
表示错误是软件故障。
u
表示错误没有确定。

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

注:在详细数据长度计算的过程中,每个“W”都被当作是 8 个字节,并且是不区分大小写的。

数据标识
从详细数据 ID 消息集合 “D” 中标识一个文本消息,在该详细数据的前面的错误报表中打印出来。 该值被解释成一个无符号的十六进制数,长度最多 4 位。
数据编码
描述了详细数据是如何在错误报表中打印出来的。 有效值是:
字母
该详细数据是一个可打印的 ASCII 字符串。
12 月
该详细数据为一个整数值的二进制表示,并且要打印的是与其相当的十进制值。
LDEC
该详细数据为一个 64 位值的二进制表示,并且要打印的是与其相当的十进制数。/defn>
HEX
该详细数据要以十六进制数的形式打印。

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

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

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 描述了已经发生的错误的安装原因。 安装原因被定义成由资源的初始化安装或者设置导致的条件。最多可以指定四个安装原因消息标识,用逗号隔开。 可以指定一个最多 4 个安装原因消息标识列表,以逗号隔开。 该值从安装原因消息集合 “I” 中指定一条文本消息,在错误发生的时候显示出来。 该值被解释成一个无符号的十六进制数,长度最大 4 位。 安装原因应按概率递减的顺序列示。 该字段可以空着,如果它对已经发生的此错误不适用的话。 如果此字段保留为空,那么 User_Causes Fail_Causes字段必须为非空白。 该字段还可以指定 XPG4 样式消息。 这会在以后再讨论。
LABEL 指定一个最多 19 个字符的唯一的标签,它必须对每个错误记录模板都提供。 包含 " 的字符串 #define #ERRID_label Error_ID" ,其中 错误标识 值是分配给错误记录模板的唯一标识,如果在命令行上指定了 -h 标志,那么会写入标准输出。
注: 如果 LABEL 字段超过 19 个字符,那么将接受前 19 个字符。
Log 指定当错误发生时是否应该为该错误创建一个错误日志记录。 日志字段可以设置为 True 或 False。 如果该字段从模板省略,其值将缺省为 True。 当此字段设置为 False 时, Report Alert字段将被忽略。
Prob_Causes 描述了已经发生的错误的 1 个或多个可能的原因。 可以指定一个最多 4 个可能原因消息标识列表,以逗号隔开。 该值会从可能原因消息集合 “P” 中指定一条文本消息,在错误发生时显示出来。 该值被解释成一个无符号的十六进制数,长度最多 4 位。 可能原因应该按照可能性递减的顺序列示。 最少需要有一个可能的原因。 该字段还可以指定 XPG4 样式消息。 这会在以后再讨论。
Report 指定记录下来的错误的发生在错误报表打印时是否应该报告。 该 Report字段可以设置为 True 或 False。 如果该字段从模板省略,其值将缺省为 True。
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中。

"错误描述" , "可能原因" , "用户原因" , "安装原因" , "故障原因" , "建议操作" 和 "详细数据标识" 消息必须是错误日志消息目录中保留的错误消息标识或 XPG4 消息。

错误消息标识包含最多四位的十六进制数,前面没有 "Ox"。 例如,1234 或 ABCD。 可使用errmsg -w命令打印这些信息及其标识符。 可以使用 错误消息 命令来添加新消息。

XPG4 消息是使用表单指定的

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

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

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

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

  • 不支持变量替换。 例如,这些字符串不可以用作格式说明符来打印值。 字符串只能包含格式字符 "\t" 和 "\n"。
  • 缺省的文本字符串不可以超过 1kb,即 1024 字节。
  • 必须注意的是,错误描述是在非详细报表中的 40 字符区域中打印的。 对于这些报表没有完成字符串格式化,只有头 40 个字符才会被打印出来。
  • 字符串后面不应该包含一个新行。 这是由 errpt 提供的。

对每个增加进来的条目,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_Data.data_id值,用于计算该错误的唯一 "错误标识"。 对于 XPG4 模板,标签也会包含在计算中。

以下项的内容: Log, Report Alert字段不包含在唯一错误标识的计算中; 因此,在使用 错误更新 命令存储在 "错误记录模板存储库" 中的错误条目定义中,可以随时修改特定错误的日志,报告和警报特征。 还要注意详细数据字段的 data_len 和 data_encode 部分没有使用到。

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

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

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

标志

描述
-c 检测输入文件有无语法错误。
-f 强制所有的模板进行更新,包括那些错误 ID 与输入模板中的相同的模板。
-h 创建 #define指定给错误模板的每个错误标识的语句。 如果在命令行上提供了文件名,那么头文件名将是附加了 .h的所提供的文件名。 否则, #define将语句写入标准输出。
-n 禁止将错误记录模板增加到错误记录模板库中。
-p 使用以下内容添加或更新模板: Alert字段设置为 True ,包含 "错误描述" , "可能原因" , "用户原因" , "用户操作" , "安装原因" , "安装操作" , "故障原因" , "失败操作" 或 " SNA 通用警报体系结构未识别的详细数据标识值 (在出版物 GA27-3136中)。 errupdate 命令将不会让您对模板增加这些特征,除非您指定了此标志。
-q 禁止撤销文件的创建。
-y FileName 使用 FileName 参数指定的错误记录模板文件。

安全性

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

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。

示例

  1. 要添加条目,请按以下方式在输入文件中定义该条目:
    + CDROM_ERR22:
            Comment=        “Temporary CDROM read error”
            Class=  H
            Log=            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,指定 modify 运算符 = (等号) ,后跟唯一的错误标识,以及要修改的条目的新特征:
    errupdate
     =99999999:
     Report = False
     Log = True
  3. 删除条目 99999999从 "错误记录模板存储库" 中,指定删除运算符-(减号) ,后跟要删除的条目的唯一错误标识:
    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
             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 消息以及传统的错误标识或代码点。

文件

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