runacct シェルスクリプトは、呼び出されるたびに基本的な 4 種類のレポートを生成します。これらのレポートは、接続アカウンティング、毎日のログイン別利用状況、日次および月次合計によって報告されるコマンド利用状況の 3 種類を対象とするレポートと、ユーザーの最後のログイン時刻のレポートです。4 つの基本レポートは次のとおりです。
表 61-2 日次アカウンティングレポート
このレポートは、使用された各端末回線に関する情報を示します。次に例を示します。
Feb 27 12:25 1997 DAILY REPORT FOR mercury Page 1 from Wed Feb 26 13:21:58 1997 to Thu Feb 27 12:25:33 1997 1 system boot 1 run-level 3 1 acctg on 1 runacct 1 acctcon TOTAL DURATION IS 1384 MINUTES LINE MINUTES PERCENT # SESS # ON # OFF /dev/pts/5 0 0 0 0 0 /dev/pts/6 0 0 0 0 1 /dev/pts/7 0 0 0 0 0 console 1337 97 1 1 1 pts/3 0 0 0 0 1 pts/4 0 0 0 0 1 pts/5 3 0 2 2 3 pts/6 232 17 5 5 5 pts/7 54 4 1 1 2 pts/8 0 0 0 0 1 pts/9 0 0 0 0 1 TOTALS 1625 -- 9 9 16
from および to 行はこのレポートで反映される時間帯、つまりこの前のアカウンティングレポートが生成されてから現在のアカウンティングレポートが生成されるまでの時間を指定します。その次はシステムのリブート、シャットダウン、電源異常からの回復と、acctwtmp プログラムによって /var/adm/wtmp にダンプされたその他のすべてのレコードです。詳細については、acct(1M) のマニュアルページを参照してください。
このレポートの第 2 部は回線利用状況の内訳です。TOTAL DURATION は、システムがどれだけの時間マルチユーザーモード (端末回線を通してアクセス可能です) であったかを示します。この部分を構成しているカラムを表 61-3 で説明します。
表 61-3 日次レポート
マシンの稼動中は、/var/adm/wtmp ファイルから接続アカウンティングが準備されるので、このファイルを監視する必要があります。wtmp ファイルが急速に大きくなる場合は、acctcon -l < /var/adm/wtmp を実行してどの tty 回線の使用頻度が最も大きいかを調べてください。割り込みが頻繁に発生する場合は、全般的なシステムの性能が影響を受けることになります。さらに、wtmp が壊れることもあります。この問題を解決するには、「wtmp ファイルを修復する方法」を参照してください。
このレポートは、システム資源の利用状況のユーザー別の内訳を示します。次に例を示します。
Feb 27 12:25 1997 DAILY USAGE REPORT FOR mercury Page 1 LOGIN CPU (MINS) KCORE-MINS CONNECT (MINS) DISK # OF # OF # DISK FEE UID NAME PRIME NPRIME PRIME NPRIME PRIME NPRIME BLOCKS PROCS SESS SAMPLES 0 TOTAL 1 1 2017 717 785 840 660361 1067 9 7 20 0 root 1 1 1833 499 550 840 400443 408 2 1 0 1 daemon 0 0 0 0 0 0 400 0 0 1 0 2 bin 0 0 0 0 0 0 253942 0 0 1 0 3 sys 0 0 0 0 0 0 2 0 0 1 0 4 adm 0 0 46 83 0 0 104 280 0 1 0 5 uucp 0 0 74 133 0 0 1672 316 0 1 0 71 lp 0 0 0 2 0 0 3798 1 0 1 0 8198 ksm 0 0 8 0 0 0 0 6 1 0 0 52171 pjm 0 0 56 0 234 0 0 56 6 0 20
日次利用状況レポートで示される各データを表 61-4 で説明します。
表 61-4 日次利用状況レポート
このレポートはコマンド別のシステム資源の利用状況を示します。このレポートでは、最も使用率の高いコマンドがわかり、それらコマンドがどのようにシステム資源を利用しているかに基づいて、どのようにしたらシステムの最適チューニングが可能かを知ることができます。日次レポートも月次レポートも見た目には同じですが、日次要約レポートは当日だけについてのレポートであるのに対して、月次要約レポートは、会計期の初めから当日までについてのレポートです。つまり、月次レポートは、monacct が最後に実行されたときからの累積データを表します。
これらのレポートは TOTAL KCOREMIN によってソートされます。TOTAL KCOREMIN は任意の基準ですが、システムでのドレーンの計算にはすぐれた指標です。
次に日次コマンド要約レポートの例を示します。
Feb 27 12:25 1997 DAILY COMMAND SUMMARY Page 1 TOTAL COMMAND SUMMARY COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ TOTALS 1067 2730.99 2.01 1649.38 1361.41 0.00 0.00 6253571 2305 sendmail 28 1085.87 0.05 0.24 23865.20 0.00 0.19 101544 39 admintoo 3 397.68 0.12 1132.96 3443.12 0.04 0.00 680220 83 sh 166 204.78 0.31 161.13 651.80 0.00 0.00 598158 20 nroff 12 167.17 0.14 0.24 1205.55 0.01 0.59 709048 22 find 10 151.27 0.27 2.72 563.40 0.03 0.10 877971 1580 acctdusg 3 87.40 0.13 2.74 698.29 0.04 0.05 883845 203 lp 10 74.29 0.05 0.22 1397.38 0.01 0.24 136460 57 expr 20 67.48 0.02 0.06 3213.24 0.00 0.34 6380 1 mail.loc 3 65.83 0.01 0.04 11285.60 0.00 0.15 24709 15 cmdtool 1 37.65 0.02 20.13 2091.56 0.02 0.00 151296 1 uudemon. 105 37.38 0.09 0.32 435.46 0.00 0.27 62130 17 csh 6 35.17 0.05 57.28 756.30 0.01 0.00 209560 13 col 12 31.12 0.06 0.26 523.00 0.00 0.23 309932 0 ntpdate 22 27.55 0.05 11.18 599.00 0.00 0.00 22419 0 uuxqt 44 18.66 0.04 0.06 417.79 0.00 0.74 32604 3 man 12 15.11 0.03 7.05 503.67 0.00 0.00 85266 47 . . .
表 61-5 で、日次コマンド要約レポートに示されるデータをカラム別に説明します。
表 61-5 日次コマンド要約レポート
この月次コマンド要約は、次のただ 1 点の相違を除いて日次コマンド要約と同じです。つまり、月次コマンド要約は monacct が最後に起動されたときからの累積合計を示します。次に例を示します。
Mar 4 02:30 1997 MONTHLY TOTAL COMMAND SUMMARY Page 1 TOTAL COMMAND SUMMARY COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ TOTALS 771 483.70 0.94 8984.09 515.12 0.00 0.00 2248299 179 sh 105 155.41 0.23 429.58 667.94 0.00 0.00 491870 1 uudemon. 85 29.39 0.07 0.29 434.28 0.00 0.23 49630 14 acctcms 5 27.21 0.04 0.04 752.41 0.01 0.90 218880 1 ntpdate 17 21.30 0.04 14.10 605.73 0.00 0.00 18192 0 dtpad 1 19.69 0.01 10.87 2072.70 0.01 0.00 46992 8 sendmail 17 16.75 0.02 0.02 859.04 0.00 0.91 1965 0 acctprc 1 14.92 0.03 0.03 552.69 0.03 0.95 115584 0 uuxqt 34 14.78 0.03 0.04 426.29 0.00 0.92 25194 0 uusched 34 10.96 0.03 0.03 363.25 0.00 0.91 25194 0 sed 40 10.15 0.03 0.09 315.50 0.00 0.36 64162 2 man 5 10.08 0.02 57.58 555.05 0.00 0.00 25773 2 getent 1 7.68 0.01 0.02 921.60 0.01 0.40 20136 0 in.rlogi 5 7.65 0.01 4331.67 611.73 0.00 0.00 87440 0 cp 37 7.28 0.03 0.05 280.08 0.00 0.50 1739 36 date 27 7.24 0.02 0.03 329.12 0.00 0.65 23443 1 ls 15 7.05 0.01 0.02 503.33 0.00 0.79 14123 0 awk 19 6.94 0.02 0.06 372.04 0.00 0.32 666 0 rm 29 6.83 0.02 0.04 301.32 0.00 0.60 2348 17
各データ項目については、「日次コマンド要約」の説明を参照してください。
このレポートは、特定のログインが最後に使用された日付を示します。この情報を使用して、使用されていないログインやログインディレクトリを見つけることができます。それらのログイン、ログインディレクトリは保存して削除できます。次に例を示します。
Feb 27 12:25 1997 LAST LOGIN Page 1 . . . 00-00-00 rebecca 00-00-00 sjwolf 97-02-27 klw 00-00-00 reception 00-00-00 smithey 97-02-27 lou 00-00-00 release 00-00-00 smsc 97-02-27 root 00-00-00 resch 00-00-00 smtp
/var/adm/pacctn ファイル、または acct.h 形式の任意のファイルの内容は、acctcom プログラムを使用していつでも調べることができます。このコマンドを実行するときに、ファイルも標準入力も指定しなければ、acctcom は pacct ファイルを読み取ります。acctcom は、終了したプロセスに関する情報を示します (実行中のプロセスは ps コマンドで調べることができます)。acctcom のデフォルト出力は次に示す情報を示します。
コマンド名 (スーパーユーザー特権を使用して実行された場合は # 記号)
ユーザー
tty 名 (未知の場合は ? として表示)
開始時刻
終了時刻
実時間 (秒単位)
CPU 時間 (秒単位)
平均サイズ (K バイト単位)
acctcom にオプションを使用することにより、次の情報を得ることができます。
fork/exec フラグの状態 (exec を使用しない fork の場合は 1)
システム終了状態
hog 係数
合計 kcore 分
CPU 係数
転送文字数
読み取りブロック数
表 61-6 で acctcom のオプションを説明します。
オプション |
説明 |
---|---|
-a |
選択したプロセスに関する特定の平均統計を表示する (統計は出力が記録された後に表示される)。 |
-b
|
ファイルを逆読みし、最後のコマンドから先に表示する (標準入力の読み込みには関係しない)。 |
-f |
fork/exec フラグおよびシステム終了状態カラムを出力する (出力は 8 進数)。 |
-h |
平均メモリーサイズに代えて hog 係数を表示する。hog 係数は、経過時間とプロセスが実行中に消費した合計 CPU 利用可能時間との比 (合計 CPU 利用時間/経過時間)。 |
-i |
入出力カウントを含むカラムを出力する。 |
-k |
メモリーサイズの代わりに、キロバイト/分ごとのコアサイズの合計値を表示する。 |
-m |
平均コアサイズ (デフォルト) を表示する。 |
-q |
出力レコードは出力しない。平均統計だけを出力する。 |
-r |
CPU 係数 (システム使用時間 / (システム使用時間 + ユーザー使用時間) を表示する。 |
-t |
システムおよびユーザー CPU 時間を表示する。 |
-v |
出力からカラム見出しを除外する。 |
-C sec |
合計 (システム + ユーザー) CPU 時間が sec 秒を超えたプロセスだけを表示する。 |
-e time |
time 以前に存在したプロセスを hr[:min[:sec]] の書式で表示する |
-E time |
time 以前に開始されたプロセスを hr[:min[:sec]] の書式で表示する。同じ time を -S と -E の両方に使用すれば、そのときに存在していたプロセスを表示する。 |
-g group |
group に属しているプロセスだけを表示する。 |
-H factor |
factor を超えるプロセスだけを表示する。ただし、factor は「hog 係数」(-h オプションを参照)。 |
-I chars |
chars によって指定されるカットオフ数を超える文字数を転送したプロセスだけを表示する。 |
-l line |
端末 /dev/line に属しているプロセスだけを表示する。 |
-n pattern |
pattern 「+」が 1 回以上現れることを意味する以外は、一般的な正規表現に一致するコマンドだけを表示する。 |
-o ofile |
レコードを出力しないで、レコードを acct.h 形式で ofile にコピーする。 |
-O sec |
CPU システム時間が sec 秒を超えるプロセスだけを表示する。 |
-s time |
time 以後に存在したプロセスを hr[:min[:sec]] の書式で表示する。 |
-S time |
time 以後に開始されたプロセスを hr[:min[:sec]] の書式で表示する。 |
-u user |
user に属しているプロセスだけを表示する。 |