名前 | 形式 | 機能説明 | オプション | 式 | 識別子 | 書式化 | 使用例 | 属性 | 関連項目 | 診断 | 注意事項
limreport は簡単で強力なレポート作成プログラムです。limreport はパスワードマップを順次走査し、ユーザーごとに select-expression を評価します。結果がゼロ以外、空でない文字列、または設定されたフラグである場合、残りの引数を printf 形式の引数として解釈し、書式化したデータを標準出力に書き込みます (printf(3C) を参照)。
次のコマンドは、ユーザー ID が 100 以上であり、CPU 総使用量が一定の量を超えているすべてのユーザーのログイン名と CPU 総使用量を一覧表示します。
limreport 'uid>=100&&cpu.accrue>1.5e10' '%s\t%-.0f\n' lname cpu.accrue
limreport はパスワードマップとユーザーの l ノードから情報を読み取ります。l ノードデータを要求しないように limreport を呼び出した場合、l ノードは読み取られません。つまり、l ノードが利用できない場合でも、limreport はパスワードマップのデータだけで正常に使用できます。
次のコマンド行オプションを使用できます。
パスワードマップの替わりにローカル l ノードデータベースファイルを使用します。このオプションは、システムの /etc/passwd ファイル (同時に、NIS、NIS+、または LDAP のようなネットワークネームサービスにある対応ファイル) に多くのユーザーが登録されている場合に役立ちます。このオプションを使用すると、limreport は作成された l ノードに関する情報を入手するために、ローカル l ノードデータベースファイル (/var/srm/srmDB) を使用します。
このオプションには、次の制限があります。
level と orphan 属性の値は常に 0 になる。
sgroupname 属性の値は常に空文字列になる。
CPU とメモリー総使用量の情報は最新でない場合がある。
limreport は C スタイルの式を使用し、さらに 5 つの特殊な型と数個の演算子を使用します。string
型、flag
型 (C の enum
型に似ている)、integer
と long
の数値型、および浮動小数点型の double
があります。演算子の優先度は C に似ています。しかし、関係演算子はビット単位演算子よりも優先度が低くなります。
flag オペランドは関係演算子だけに受け入れられます。C スタイルの型変換が実行されて、算術演算子と関係演算子の数値オペランドは同等な型になります。
次に、式の要素を示します。
乗算と除算。数値オペランドのみ。
整数モジュロ。整数の数値オペランドのみ。
加算と減算 (または、単項否定)。数値オペランドのみ。
ビット単位の論理積、論理和、排他的論理和。
ビット単位の補数 (1 つのオペランド)、または正規表現一致 (2 つの文字列オペランド)。オペランドを 2 つ指定すると、左側にある文字列が右側にある正規表現文字列と一致する場合は 1 に評価されます。そうでない場合は 0 に評価されます。正規表現は ed(1) の形式に従います。
スケジューリンググループのメンバーであるかどうか。左側にある数値 (ユーザー ID) または文字列 (ログイン名) を持つユーザーが右側にある数値 (ユーザー ID) または文字列 (ログイン名) を持つスケジューリンググループのメンバーである場合は 1 に評価されます。そうでない場合は 0 に評価されます。グループのヘッダーであるユーザーは、そのグループに属するとはみなされません。
等しい、または等しくない。左側と右側が同じ (または異なる) 数値、文字列、またはフラグの値を持つ場合は 1 に評価されます。そうでない場合は 0 に評価されます。
大なりまたは小なり。左側にある数値 (または文字列) が右側にある値よりも大きい (または小さい) 場合は 1 に評価されます。そうでない場合は 0 に評価されます。
以上または以下。左側にある数値 (または文字列) が右側にある値よりも大きい (または小さい) または等しいと評価された場合は 1 に評価されます。そうでない場合は 0 に評価されます。
論理積または論理和。左側または右側がゼロ以外の数値、ヌル以外の文字列、または設定されたフラグ値であると評価された場合は 1 に評価されます。そうでない場合は 0 に評価されます。
単項論理否定。右側がゼロの数値、ヌルの文字列、または設定されていないフラグ値であると評価された場合は 1 に評価されます。そうでない場合は 0 に評価されます。
部分式。デフォルトの演算子の優先度を変更するために使用できます。
文字列定数
日付と時刻。基準時点からの秒数を示す integer
定数と同等です。書式は {[[[[year/]month/]day]hour:]min[.sec]} です。Year は 4 桁の整数です (たとえば、1989、2001)。Month は、1 から 12 までの 1 桁または 2 桁の数字です。あるいは、推奨できませんが、3 文字の大文字と小文字が混在する英語の月名です (たとえば、Jan、sep、NOV)。Day は、1 から 28、29、30、または 31 (月の日数により異なる) までの 1 桁または 2 桁の数字です。Hour は、0 から 23 までの 1 桁または 2 桁の数字です。Min は、0 から 59 までの 1 桁または 2 桁の数字です。Sec は、00 から 59 までの 2 桁の数字です。区切り文字 /、:、およびスペースは省略可能です。ただし、区切り文字を省略する場合、month、day、hour、および min の数値は 2 桁でなければなりません。日付と時刻の書式における任意の要素を省略すると、システム時間から現在の値が使用されます。
次に、有効な日付と時刻の値の例を示します。{19910101 12:00.01} は、1991 年 1 月 1 日午後 0 時を 1 秒過ぎた時刻です。{17:00} は、今日の午後 5 時です。{01271200} は、今年の 1 月 27 日午後 0 時です。
次に示す識別子の 1 つ。integer、long、double、string、または flag (型により異なる) に評価されます。サイズが 16 ビットの識別子は型 int32
に変換されます。フラグ属性の場合、オプションの ? 接尾辞を指定することにより、属性の評価方法を変更できます (次を参照)。フラグ以外の属性の場合、? は影響しません。
数値定数。デフォルトでは 10 進整数として解釈されます。0 または 0x の接頭辞を指定した場合、それぞれ 8 進数または 16 進数として解釈されます。小数点または指数部分 ({eE}_integer) を指定すると、10 進浮動小数点数の double
として解釈されます。整数定数の型は int32
です。整数定数の絶対値が大きすぎて 32 ビットで表現できない場合、その型は int64
です。オプションの接尾辞 l または L を指定すると、型を強制的に int64
にできます。
数字には、1 つまたは 2 つのスケール文字 (省略可能) を接尾辞として指定できます (たとえば、number[eptgmkb][wdhms])。1 番目の文字は、バイト数にエクサバイト (e)、ペタバイト (p)、テラバイト (t)、ギガバイト (g)、メガバイト (m)、キロバイト (k)、またはバイト (b) を掛けます。2 番目の文字は、週 (w)、日 (d)、時間 (h)、分 (m) または秒 (s) を秒数に換算して掛けます。1 文字だけを指定し、その意味があいまいになる場合 (たとえば、m)、内容から意味が推測されます。b (バイト) スケール文字は 100bm という形式の数字だけで意味を持ちます。この場合、m は分であり、メガバイトではありません。
記号がシェルによって解釈されないように (たとえば、& がシェルの構文として解釈されないように)、式を単一引用符で囲み、文字列が定数として処理されるようにします。
識別子は、Solaris Resource Manager 構成ファイル内で定義されている属性の名前か組み込み名のどちらかです。ほとんどの組み込み識別子はユーザーのパスワードマップエントリから抽出されたフィールドを表わします。ただし、これ以外にも便利な識別子があります。すべての標準属性とその型のリストについては、srm(5SRM) のマニュアルページを参照してください。
識別子の使用に関しては、数値上の制約はありません。メモリー使用状況とリミット属性を表わす識別子はバイト数に評価されます。日付と時刻を表わす識別子は秒数に評価されます。メモリー総使用量を表わす識別子は毎秒バイト数に評価されます。
フラグ識別子はフラグの完全な値で評価されます。つまり、フラグが inherit の即時値を持つ場合、その値は (再帰的に) 親の l ノードから評価されます。フラグ識別子に接尾辞 ? が付いている場合、フラグの即時値が代用されます。したがって、値 inherit は可能です。
次に、組み込み識別子、およびその型と値を示します。
string
; ログイン名
integer
; ユーザー ID
integer
; 初期グループ ID
string
; 暗号化パスワード
string
; 初期 (ホーム) ディレクトリ
string
; 初期シェル
string
; コメント (gecos フィールド)
string
; comment と同義
string
; ユーザーのスケジューリンググループの親のログイン名
integer
; 現在の時刻
integer
; スケジューリングツリーにおける l ノードの深さ。root は 0 です。親のない l ノードの場合は、切断ツリーにおける深さです。
integer
; l ノードの親がない場合、ゼロ以外の値です。
string
; limadm(1MSRM) の構文を使用した属性値割り当てのリスト。読み取り専用の属性はリストから省略されます。
limreport 'flag.real' - lname preserve
上記コマンドの出力を -f オプションで limadm に渡すと、limreport コマンドの実行時におけるすべてのユーザーの l ノードの状態を完全に再構築できます。
integer
; limreport が接続されている l ノードのユーザー ID
string
; myuid に対応するログイン名
flag
; 定数
flag
; 定数
flag
; 定数
flag
; 定数
利用可能な組み込み識別子とユーザーにより定義された識別子のすべてを表示するには、limreport を -? オプションで呼び出すか、limadm を -a オプションで呼び出します。
選択した l ノードが存在しない場合、組み込み識別子 sgroupname、preserve、mylname、orphan、および level は、デフォルトでヌル文字列または -1 (orphan と level の場合) になります。エラーメッセージも標準エラーに書き込まれます。
format 引数は printf(3C) 関数の書式化文字列と同じように解釈されます。* 以外のすべての修飾子を % メタ文字の後に指定できます。format 引数が空の場合、あるいはダッシュ (-) だけの場合、デフォルトの書式化が使用されます。デフォルトの書式化では、引数は最も単純な形式 (符号なし整数または浮動小数点数) で出力されます。そして、タブコードで区切られ、改行文字で終了します。
修飾子 %t を使用すると、1970 年 1 月 1 日午前 0 時からの秒数として表わされる日付を簡単に出力できます。これにより、対応する integer 数値引数が時刻として解釈され、ctime(3C) 形式の文字列として出力されます。%t 内の修飾子の効果は %s の場合と同じです。
修飾子 %i を使用すると、時間間隔 (秒数として表わされる) を簡単に出力できます。これにより、対応する integer 数値引数が時間間隔として解釈され、形式 [Nw] [Nd] [Nh] [Nm] [Ns] の文字列として出力されます。%i 内の修飾子の効果は %s の場合と同じです。小数点をともなう表示幅を指定した場合、表示幅がその数を超えると、後続の桁が切り捨てられ、+ が付加されます。
修飾子 %v を使用すると、フラグ値を簡単に出力できます。これにより、対応する flag 引数が clear、set、group、または inherit の文字列の 1 つに変換され文字列として出力されます。%v は %s と同じ効果を持ちます。
limreport 'uid >= 1' '%s,%u\n' lname uid
limreport 'flag.real && logins!=0' '%-8.8s %5d %3d %10d\n'\lname cpu.myshares process.myusage memory.myusage
limreport \!flag.real - uid
式の中で flag.real を使用すると、既存の l ノードだけを検査できます。これにより、存在しない l ノードに関連付けられている不要なメッセージを取り除くことができます。
ed(1), ctime(3C), printf(3C), liminfo(1SRM), limadm(1MSRM), srm(5SRM)
『Solaris Resource Manager 1.3 のシステム管理』
すべての使用量、診断、およびエラーメッセージは、標準エラーに書き込まれます。
任意のエラーメッセージを出力する場合、limreport はエラーメッセージの数を示してゼロ以外の終了ステータスを返します。
引数なしで limreport を呼び出すと、limreport は使用状況の要約を生成します。そこには、すべての有効な識別子のリストも含まれます。
不正確な書式化文字列、不正確な式、および不明な識別子を使用すると、limreport は通知エラーメッセージを生成して終了します。expression 引数の数が書式化文字列中の % 修飾子の数と一致しない場合、limreport はエラーを生成して終了します。
動作中にユーザーの l ノードを読み取れない場合、limreport は診断メッセージを書き込み、パスワードマップにおける次のユーザーの処理を継続します。
このマニュアルページは、SunOS 5.6、SunOS 5.7、および SunOS 5.8 に適用できます。
名前 | 形式 | 機能説明 | オプション | 式 | 識別子 | 書式化 | 使用例 | 属性 | 関連項目 | 診断 | 注意事項