手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

fmtmsg(1)

名称

fmtmsg - 在 stderr 或系统控制台上显示消息

用法概要

fmtmsg [-c class] [-u subclass] [-l label] [-s severity] 
     [-t tag] [-a action] text

描述

根据消息的分类组成部分,fmtmsg 实用程序会将格式化消息写入到 stderr,或者写入到控制台。

格式化消息最多包含五个标准组成部分(请参见本页“环境变量”部分中的环境变量 MSGVERB)。分类组成部分和子类组成部分不会显示为标准消息的一部分,而是用来定义消息的来源并控制格式化消息的显示方式。

选项

支持以下选项:

–c class

描述消息的来源。有效关键字包括:

hard

状况来源于硬件。

soft

状况来源于软件。

firm

状况来源于固件。

–u subclass

一个关键字列表(以逗号分隔),进一步定义消息和控制消息的显示方式。有效关键字包括:

appl

状况来源于应用程序。此关键字不应与 utilopsys 结合使用。

util

状况来源于实用程序。此关键字不应与 applopsys 结合使用。

opsys

消息来源于内核。此关键字不应与 applutil 结合使用。

recov

应用程序将从状况中恢复。此关键字不应与 nrecov 结合使用。

nrecov

应用程序将无法从状况中恢复。此关键字不应与 recov 结合使用。

print

将消息输出到标准错误流 stderr

console

将消息写入到系统控制台。可以使用 print 和/或 console

–l label

标识消息的来源。

–s severity

表示错误的严重性。severity 标准级别的关键字和定义包括:

halt

应用程序出现了严重故障并将停止。

error

应用程序检测到故障。

warn

应用程序检测到不正常状况,可能存在问题。

info

应用程序将提供有关未出现错误的状况的信息。

–t tag

包含消息标识符的字符串。

–a action

对错误恢复过程第一步进行描述的文本字符串。必须写入此字符串,以便将整个 action 参数解释为一个参数。fmtmsg 会在每个操作字符串前面使用 TO FIX: 前缀。

text

对状况进行描述的文本字符串。必须写入此字符串,以便将整个 text 参数解释为一个参数。

示例

示例 1 标准消息格式

在以下 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 包括:labelseveritytextactiontag。如果 MSGVERB 包含某个组成部分的关键字,且该组成部分的值不是组成部分的空值,则向 stderr 写入消息时,fmtmsg 将在消息中包含该组成部分。如果 MSGVERB 不包含消息组成部分的关键字,则该组成部分不会显示在消息中。关键字可按任意顺序出现。如果未定义 MSGVERB、如果其值为空字符串、如果其值使用的格式不正确,或者如果其包含除以上列出的有效关键字之外的关键字,则 fmtmsg 会选择所有组成部分。

MSGVERB 仅影响选择哪些消息组成部分来显示。所有消息组成部分均包含在控制台消息中。

SEV_LEVEL 用于定义严重性级别,并为其关联相应的输出字符串,以供 fmtmsg 使用。下面所示的标准严重性级别无法修改。但可以定义、重新定义以及删除其他严重性级别。

0

(未使用严重性级别)

1

HALT

2

ERROR

3

WARNING

4

INFO

SEV_LEVEL 可按如下方式进行设置:

description 是包含三个字段并以逗号分隔的列表:

SEV_LEVEL=   [description[:description[:...]]]
export SEV_LEVEL

description=severity_keyword, level, printstring

severity_keyword 是一个字符串,可用作 fmtmsg–s severity 选项的关键字。

level 是一个结果计算为正整数(为标准严重性级别预留的 01234 除外)的字符串。如果使用关键字 severity_keyword,则 level 为传递到 fmtmsg(3C) 的严重性值。

只要使用严重性值 levelprintstring 就将是 fmtmsg 用于标准消息格式的字符串。

如果未定义 SEV_LEVEL,或者其值为空,则不显示除缺省值以外的任何严重性值。如果以冒号分隔的列表中的 description 不是包含三个字段并以逗号分隔的列表,或者如果以逗号分隔的列表中的第二个字段没有计算为正整数,将忽略以冒号分隔的列表中的 description

退出状态

将返回以下退出值:

0

所有请求的函数均已成功执行。

1

命令包含一个语法错误、一个无效选项或者无效的选项参数。

2

函数执行只有部分成功,但是,消息不会显示在 stderr 中。

4

函数执行只有部分成功,但是,消息不会显示在系统控制台中。

32

请求的函数均未成功执行。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

addseverity(3C)fmtmsg(3C)attributes(5)