この節では、アカウンティング情報を保守する方法について説明します。
UNIX のアカウンティングシステムは堅固ではなく、ファイルが壊れたり失われることがあります。そのようなファイルにも、単に無視してよいものや、バックアップから復元できるものがあります。しかし、特定のファイルは、アカウンティングシステムの完全性を維持するために修復しなければなりません。
wtmp ファイルは、アカウンティングシステムを日常的に運用する上で発生する大部分の問題の原因になっています。日付が変更され、システムがマルチユーザーモードになると、1 組の日付変更レコードが /var/adm/wtmp に書き込まれます。wtmpfix ユーティリティは、日付変更が現れたときの wtmp レコード内のタイムスタンプの調整用として用意されています。ただし、日付変更とリブートとの組み合わせによっては、wtmpfix のチェックから漏れて、acctcon の処理を失敗させることがあります。wtmp の問題を解決する手順については、「wtmp ファイルを修復する方法」を参照してください。
スーパーユーザーになります
ディレクトリ /var/adm/acct/nite に変更します。
次のように、バイナリファイル wtmp.MMDD を ASCII ファイル xwtmp に変換します。
# fwtmp wtmp.MMDD xwtmp
MMDD |
2 桁の数値で指定される月日 |
xwtmp を編集します。壊れたファイルを削除するか、始めから日付変更までのすべてのレコードを削除します。
ASCII ファイル xwtmp をバイナリファイルに変換し、壊れたファイルを上書きします。
# fwtmp -ic xwtmp wtmp.MMDD
/var/adm/acct/sum/tacct の完全性は、システム資源に対してユーザーに課金している場合は重要です。負の番号、重複したユーザー ID、または 65535 のユーザー ID など、不可思議な tacct レコードが現れることがありますが、その場合、まず prtacct で、/var/adm/acct/sum/tacctprev を印刷して、チェックしてください。内容が大丈夫であるような場合は、最新の /var/adm/acct/sum/tacct.MMDD ファイルを使用して、/var/adm/acct/sum/tacct ファイルを作成し直してください。次の手順は、簡単な修復手順の概要を説明しています。
スーパーユーザーになります。
ディレクトリ /var/adm/acct/sum に変更します。
次のように、tacct.MMDD の内容をバイナリから ASCII 形式に変換します。
# acctmerg -v tacct.MMDD xtacct
MMDD |
2 桁の数字で指定される月日 |
xtacct ファイルを ASCII 形式からバイナリに変換します。
# acctmerg -i xtacct tacct.MMDD
MMDD |
2 桁の数字で指定される月日 |
ファイル tacct.prv と tacct.MMDD をマージしてファイル tacct を生成します。
# acctmerg tacctprv tacct.MMDD tacct
runacct プログラムはいろいろな原因で失敗することがあります。一番多い原因は、システムがクラッシュする、/var がディスク容量を使い果たす、wtmp ファイルが壊れた、などです。active.MMDD ファイルが存在する場合、まずエラーメッセージがないか調べます。active ファイルとロックファイルが存在する場合、異常なメッセージがないかどうか fd2log ファイルを調べます。
runacct は、引数を指定しないで実行すると、その日の最初の起動とみなします。runacct を起動し直し、もう一度 runacct にアカウンティングをやり直させる月日を指定する場合は、引数 MMDD が必要です。処理のエントリポイントは statefile の内容に基づきます。statefile を無効にするには、次のように、処理を開始したい状態をコマンド行に指定します。
runacct プログラムを手動で実行するときは、ユーザー adm として実行していることを確認してください。