ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- stderr またはシステムコンソールへのメッセージ表示
fmtmsg [-c class] [-u subclass] [-l label] [-s severity] [-t tag] [-a action] text
fmtmsg は、メッセージの分類コンポーネントに基づいて、書式付きメッセージを stderr またはコンソールに書き出します。
書式付きメッセージは、 標準コンポーネントで構成されます (「環境」の項の環境変数 MSGVERB を参照)。このうち分類コンポーネントとサブクラスコンポーネントの 2 つは、標準メッセージの一部としては表示されません。 これらはメッセージの発行元を定義し、書式付きメッセージの表示先を指定するために使われます。
次のオプションがサポートされています。
メッセージ発行の原因となった状態の種類を表します。以下のキーワードが指定可能です。
状態の発生元はハードウェア
状態の発生元はソフトウェア
状態の発生元はファームウェア
メッセージをさらに定義しメッセージの表示先を示すための、一連のキーワードを subclass に指定します。 キーワード間はコンマで区切ります。以下のキーワードが指定可能です。
状態の発生はアプリケーション中に起因しています。このキーワードは util および opsys と同時には指定できません。
状態の発生はユーティリティ中に起因しています。このキーワードは appl および opsys と同時には指定できません。
状態の発生はカーネル中に起因しています。このキーワードは appl および util と同時には指定できません。
アプリケーションをその状態から回復させます。このキーワードは nrecov と同時には指定できません。
アプリケーションをその状態から回復させません。このキーワードは recov と同時には指定できません。
標準エラーストリーム stderr にメッセージを書き出します。
システムコンソールにメッセージを書き出します。print と console を両方指定することも可能です。
メッセージの発行元を指定します。
エラーの重大度を指定します。標準レベルの重大度として severity に指定できるキーワードとその意味を以下に説明します。
アプリケーションが重大なエラーを検出し、処理を中断しています。
アプリケーションがエラーを検出しました。
アプリケーションが、通常は起こらない状態を検出しました。エラーの可能性があります。
アプリケーションは、エラーではない単なる情報を通知しています。
メッセージの識別子を含んだ文字列を指定します。
エラー回復処理の第 1 ステップを述べた文字列を指定します。 action 引数は、それ全体が 1 つの文字列であると正しく解釈されるように 記述しなければなりません。fmtmsg は、この action で指定した文字列の前に TO FIX: を付加します。
状態を表すテキスト文字列を指定します。text 引数は、それ全体が 1 つの文字列であると正しく解釈されるように 記述しなければなりません。
例 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 にメッセージが出力されます。
fmtmsg の動作は、 2 つの環境変数 MSGVERB と SEV_LEVEL により制御されています。MSGVERB はシステム管理者によって、システム用の /etc/profile 中に設定されています。ユーザーは、このシステムに設定された値以外の MSGVERB 値を使用することができます。その方法としては、ユーザーの .profile ファイル中にある MSGVERB をリセットする、現在のシェルセッション内で値を変更する、の 2 通りがあります。SEV_LEVEL はシェルスクリプト中で使用できます。
メッセージを stderr に出力するとき、どのコンポーネントを選択すべきかを MSGVERB が fmtmsg に伝えます。MSGVERB の値は一連のキーワードで、キーワード間はコロンで区切ります。MSGVERB は次に示す形式で設定できます。
MSGVERB=[keyword[:keyword[:...]]] export MSGVERB
keywords としては、 label 、 severity 、 text 、 action 、 tag が指定できます。MSGVERB がコンポーネント用のキーワードを含んでいて、そのコンポーネントの値が NULL 文字列ではない場合、 fmtmsg はメッセージを stderr に書き出す際にそのコンポーネントをメッセージ中に挿入します。MSGVERB がコンポーネント用のキーワードを含んでいなければ、 そのコンポーネントはメッセージ表示には含まれません。前述のキーワードは任意の順序で指定できます。MSGVERB が定義されていない、値が NULL 文字列である、値の形式が正しくない、前述のもの以外のキーワードを含んでいる、といった場合には、fmtmsg はすべてのコンポーネントを選択します。
MSGVERB は、どのコンポーネントを選択するかを表しますが、 これは表示用のメッセージに関してだけです。コンソールへ出力されるメッセージには、常にすべてのコンポーネントが含まれます。
SEV_LEVEL は重大度レベルを定義し、fmtmsg で使用できるように印刷文字列をそれらのレベルに対応させます。なお以下に示す標準重大度レベルは、変更することはできません。これ以外のレベルは、定義したり、再定義したり、削除したりすることが可能です。
(重大度は使用されません)
HALT
ERROR
WARNING
INFO
SEV_LEVEL は次の形式で設定できます。
description は 3 つのフィールドで構成され、フィールド間は コンマで区切ります。
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) に渡されます。
3 番目のフィールド printstring は、前述の重大度値 level が用いられる際に fmtmsg が標準メッセージ形式で使用する文字列です。
SEV_LEVEL が定義されていない場合、またはその値が NULL 文字列の場合には、デフォルトの重大度レベル値だけが使用可能です。コロンで区切られた一連の description の中に、その内容がコンマで区切られた 3 つのフィールドで構成されていないものがあるとき、または第 2 フィールドの値が正の整数に評価されないものがあるとき、その description は無視されます。
次の終了値が返されます。
指定された機能はすべて正常に実行されました。
コマンド中に、構文の誤り、不正なオプション、 またはオプションに対する不正な引数が検出されました。
機能は部分的に正常終了したが、メッセージは stderr に出力されませんでした。
機能は部分的に正常終了したが、メッセージは システムコンソールに出力されませんでした。
要求された機能はいずれも正常に終了しませんでした。
属性についての詳細は、attributes(5) を参照してください。
|