fmtmsg [-c class] [-u subclass] [-l label] [-s severity] [-t tag] [-a action] text
根据消息的分类组成部分,fmtmsg 实用程序会将格式化消息写入到 stderr,或者写入到控制台。
格式化消息最多包含五个标准组成部分(请参见本页“环境变量”部分中的环境变量 MSGVERB)。分类组成部分和子类组成部分不会显示为标准消息的一部分,而是用来定义消息的来源并控制格式化消息的显示方式。
支持以下选项:
描述消息的来源。有效关键字包括:
状况来源于硬件。
状况来源于软件。
状况来源于固件。
一个关键字列表(以逗号分隔),进一步定义消息和控制消息的显示方式。有效关键字包括:
状况来源于应用程序。此关键字不应与 util 或 opsys 结合使用。
状况来源于实用程序。此关键字不应与 appl 或 opsys 结合使用。
消息来源于内核。此关键字不应与 appl 或 util 结合使用。
应用程序将从状况中恢复。此关键字不应与 nrecov 结合使用。
应用程序将无法从状况中恢复。此关键字不应与 recov 结合使用。
将消息输出到标准错误流 stderr。
将消息写入到系统控制台。可以使用 print 和/或 console。
标识消息的来源。
表示错误的严重性。severity 标准级别的关键字和定义包括:
应用程序出现了严重故障并将停止。
应用程序检测到故障。
应用程序检测到不正常状况,可能存在问题。
应用程序将提供有关未出现错误的状况的信息。
包含消息标识符的字符串。
对错误恢复过程第一步进行描述的文本字符串。必须写入此字符串,以便将整个 action 参数解释为一个参数。fmtmsg 会在每个操作字符串前面使用 TO FIX: 前缀。
对状况进行描述的文本字符串。必须写入此字符串,以便将整个 text 参数解释为一个参数。
在以下 fmtmsg 示例中,将采用标准消息格式生成一条完整的消息,并向标准错误流显示此消息。
example% fmtmsg -c soft -u recov,print,appl -l UX:cat \ -s error -t UX:cat:001 -a "refer to manual" "invalid syntax"
生成:
UX:cat: ERROR: invalid syntax TO FIX: refer to manual UX:cat:138示例 2 使用 MSGVERB
当环境变量 MSGVERB 按照如下方式进行设置:
MSGVERB=severity:text:action
并使用示例 1 时,fmtmsg 会生成:
ERROR: invalid syntax TO FIX: refer to manual示例 3 使用 SEV_LEVEL
当环境变量 SEV_LEVEL 按照如下方式进行设置时:
SEV_LEVEL=note,5,NOTE
以下 fmtmsg 命令:
example% fmtmsg -c soft -u print -l UX:cat -s note \ -a "refer to manual" "invalid syntax"
生成:
NOTE: invalid syntax TO FIX: refer to manual
并将消息显示在 stderr 中。
环境变量 MSGVERB 和 SEV_LEVEL 用于控制 fmtmsg 的行为。MSGVERB 由管理员在系统的 /etc/profile 中进行设置。用户可以通过重置其自身 .profile 文件中的 MSGVERB 或更改其当前 shell 会话中的值,来覆盖由系统设置的 MSGVERB 值。SEV_LEVEL 可以在 shell 脚本中使用。
向 stderr 写入消息时,MSGVERB 会指示 fmtmsg 选择哪些消息组成部分。MSGVERB 的值是以冒号分隔的可选关键字列表。可按如下方式设置 MSGVERB:
MSGVERB=[keyword[:keyword[:...]]] export MSGVERB
有效 keyword 包括:label、severity、text、action 和 tag。如果 MSGVERB 包含某个组成部分的关键字,且该组成部分的值不是组成部分的空值,则向 stderr 写入消息时,fmtmsg 将在消息中包含该组成部分。如果 MSGVERB 不包含消息组成部分的关键字,则该组成部分不会显示在消息中。关键字可按任意顺序出现。如果未定义 MSGVERB、如果其值为空字符串、如果其值使用的格式不正确,或者如果其包含除以上列出的有效关键字之外的关键字,则 fmtmsg 会选择所有组成部分。
MSGVERB 仅影响选择哪些消息组成部分来显示。所有消息组成部分均包含在控制台消息中。
SEV_LEVEL 用于定义严重性级别,并为其关联相应的输出字符串,以供 fmtmsg 使用。下面所示的标准严重性级别无法修改。但可以定义、重新定义以及删除其他严重性级别。
(未使用严重性级别)
HALT
ERROR
WARNING
INFO
SEV_LEVEL 可按如下方式进行设置:
description 是包含三个字段并以逗号分隔的列表:
SEV_LEVEL= [description[:description[:...]]] export SEV_LEVEL
description=severity_keyword, level, printstring
severity_keyword 是一个字符串,可用作 fmtmsg 的 –s severity 选项的关键字。
level 是一个结果计算为正整数(为标准严重性级别预留的 0、1、2、3 或 4 除外)的字符串。如果使用关键字 severity_keyword,则 level 为传递到 fmtmsg(3C) 的严重性值。
只要使用严重性值 level,printstring 就将是 fmtmsg 用于标准消息格式的字符串。
如果未定义 SEV_LEVEL,或者其值为空,则不显示除缺省值以外的任何严重性值。如果以冒号分隔的列表中的 description 不是包含三个字段并以逗号分隔的列表,或者如果以逗号分隔的列表中的第二个字段没有计算为正整数,将忽略以冒号分隔的列表中的 description。
将返回以下退出值:
所有请求的函数均已成功执行。
命令包含一个语法错误、一个无效选项或者无效的选项参数。
函数执行只有部分成功,但是,消息不会显示在 stderr 中。
函数执行只有部分成功,但是,消息不会显示在系统控制台中。
请求的函数均未成功执行。
有关下列属性的说明,请参见 attributes(5):
|