runacct コマンド

目的

日次アカウンティングを実行します。

構文

/usr/sbin/acct/runacctmmdd State ] ]

説明

runacct コマンドは、主な日次アカウンティングのシェル・プロシージャーです。通常 runacct コマンドは、cron デーモンによって開始されると、現行日の接続、料金、ディスク、キューイング・システム (プリンター)、およびプロセスのアカウンティング・データ・ファイルを処理して、バイナリー日次レポート /var/adm/acct/nite(x)/dayacct を作成します。また、runacct コマンドは、ASCII 日次レポート /var/adm/acct/sum(x)/rprtmmdd を作成する prdaily プロシージャーまたは請求のために、要約ファイルを準備します。

acctmerg コマンドは、アカウンティング期間の累積要約レポート /var/adm/acct/sum(x)/tacctdayacct レポートを追加します。tacct レポートは、月次レポート /var/adm/acct/fiscal(x) を作成するために、monacct コマンドが使用します。

このコマンドには、 runacct プロシージャーを再始動させる場合にキーボードから入力する必要がある 2 つのパラメーターがあります。日付パラメーター、mmdd を使用して、アカウンティングをどの日および月に対して再実行したいかを指定できます。また、管理権限を持っているユーザーは、State パラメーターを使用して、どの状態からでも、runacct プロシージャーを再始動できます。runacct プロシージャーの再始動、および障害からのリカバリーの詳細については、『runacct プロシージャーの再始動』を参照してください。

runacct コマンドは、実行時エラーが発生した場合に、アクティブ・アカウント・ファイルと要約ファイルを保護し、説明メッセージを /var/adm/acct/nite(x)/active ファイルに書き込むことによって、その進行状況を記録します。runacct プロシージャーにエラーが発生すると、メールが root ユーザーと adm ユーザーに送信され、プロシージャーが終了します。

runacct プロシージャーでは、ディレクトリー /var/adm/acct/nite(x) 内に 2 つの一時ファイル locklock1 が作成されます。runacct プロシージャーは、これらの一時ファイルを使用して、このプロシージャーに対して同時に 2 つのコールが行われないようにします。また、このプロシージャーでは、1 日当たり 2 回以上起動されることがないように、(同じディレクトリー内にある) lastdate ファイルが使用されます。

runacct コマンドは、処理を個別の再始動可能な状態に分割します。このコマンドは、1 つの状態を完了させると、次の状態の名前を /var/adm/acct/nite/state ファイルに書き込みます。runacct プロシージャーでは、下記の順序で、さまざまな状態が処理されます。

状態 アクション
SETUP アクティブ・アカウンティング・ファイルを作業ファイルへ移動させて、アクティブ・ファイルを再始動します。
WTMPFIX wtmp ファイルの整合性を検査し、必要な場合は、日付変更を修正します。
CONNECT1 acctcon1 コマンドを呼び出して、接続セッション・レコードを作成します。
CONNECT2 接続セッション・レコードを、合計アカウンティング・レコードに変換します (tacct.h フォーマット)。
PROCESS プロセス・アカウンティング・レコードを、合計アカウンティング・レコードに変換します (tacct.h フォーマット)。
MERGE 接続アカウンティング・レコードとプロセス合計アカウンティング・レコードを組み合わせます。
FEES chargefee コマンドの出力を合計アカウンティング・レコードに変換し (tacct.h フォーマットで)、それらを、接続およびプロセス合計アカウンティング・レコードと組み合わせます。
DISK ディスク・アカウンティング・レコードを、接続、プロセス、および料金合計アカウンティング・レコードと組み合わせます。
QUEUEACCT キュー (プリンター) アカウンティング・レコードをソートして、それらを合計アカウンティング・レコードに変換し (tacct.h フォーマット)、さらに他の合計アカウンティング・レコードと組み合わせます。
MERGETACCT daytacct レポート・ファイル内の日次合計アカウンティング・レコードを、 /var/adm/acct/sum/tacct レポート・ファイル内の要約合計アカウンティング・レコードとマージします。
CMS /var/adm/acct/sum(x)/cms ファイル内でコマンド要約を作成します。
USEREXIT /var/adm/siteacct シェル・ファイルがある場合は、それをこの時点でコールして、サイト依存処理を実行します。
CLEANUP 一時ファイルを削除して終了します。

runacct プロシージャーの再始動

障害が発生した後に、runacct コマンドを再始動するには、まず /var/adm/acct/nite(x)/active ファイルで診断メッセージを調べ、pacct または wtmp などの損傷データ・ファイルを修正します。そして、runacct コマンドを再始動する前に、lock ファイルと lastdate ファイル (いずれも /var/adm/acct/nite(x) ディレクトリーに入っている) を除去します。runacct コマンドを再始動させるときは、mmdd パラメーターを指定しなければなりません。このパラメーターでは、runacct コマンドがアカウンティングをどの月日に関して再実行するのかを指定します。runacct プロシージャーでは、/var/adm/acct/nite(x)/statefile ファイルを読み取ることによって、処理用のエントリー・ポイントが決定されます。このデフォルト・アクションを無効にするには、runacct コマンド・ラインで希望する state を指定します。

通常、SETUP staterunacct コマンドを再始動するのは、有効な方法とはいえません。それよりも、セットアップ・アクションを手動で実行し、下記のように、WTMPFIX 状態を指定してアカウンティングを再始動してください。


/usr/lib/acct/runacct mmdd WTMPFIX

runacct コマンドが PROCESS 状態で正しく動作しない場合は、最後の ptacct ファイルを除去します。不完全なものになるからです。

フラグ

項目 説明
-X 最初の 8 文字に切り捨てることをせずに、各ユーザー名の使用可能なすべての文字を処理します。 また、-X フラグを使用すると、runacct コマンドとそれが呼び出すすべてのコマンドが、/var/adm/acct/sum および /var/adm/acct/nite ディレクトリーではなく、/var/adm/acct/sumx および /var/adm/acct/nitex ディレクトリーを使用します。

セキュリティー

アクセス制御: このコマンドは、adm グループのメンバーのみに実行 (x) アクセス権限を与えます。

RBAC ユーザーおよび Trusted AIX® ユーザーへの注意: このコマンドは特権操作を実行できます。特権命令を実行できるのは特権ユーザーのみです。 権限および特権について詳しくは、「セキュリティー」の『特権コマンド・データベース』を参照してください。このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. システム・リソースに対して日次アカウンティング手順を始動するには、下記のコマンド・ラインを crontab ファイルに追加し、runacct コマンドが、 cron デーモンによって自動的に実行されるようにします。
    0 4 * * 1-6 /usr/sbin/acct/runacct 2> ¥
    /var/adm/acct/nite/accterr 
    長いユーザー名のサポートを指定して、日次アカウンティング手順を開始するには、crontab ファイルに次の行を追加します。
    0 4 * * 1-6 /usr/sbin/acct/runacct -X 2> ¥
    /var/adm/acct/nitex/accterr 
    この例は、cron デーモンが読み取って実行する命令を示しています。runacct コマンドは、毎月曜日から土曜日まで (1-6) の間の午前 4 時 (04) に実行され、すべての標準エラー出力 (2>) を、/var/adm/acct/nite(x)/accterr ファイルに書き込みます。このコマンドは、cron デーモンに通常与えられるアカウンティング命令の 1 つにすぎません。
  2. システム・リソースに対して、コマンド・ライン (runacct コマンドを始動させる) から日アカウンティング手順を始動させるには、下記のように入力します。
    nohup /usr/sbin/acct/runacct 2> ¥
    /var/adm/acct/nite/accterr &
    cron デーモンによって runacct プロシージャーを自動的に始動させることをお勧めしますが (例 1 を参照)、キーボードからコマンドを入力してもかまいません。runacct コマンドはバックグラウンド (&) で実行され、すべての INTERRUPT シグナルおよび QUIT シグナルは無視されます (nohup コマンド)。また、すべての標準エラー出力 (2>) は、/var/adm/acct/nite/accterr ファイルに書き込まれます。
  3. 特定の日付に対してシステム・アカウンティング手順を再始動させるには、下記のようなコマンドを入力します。
    nohup /usr/sbin/acct/runacct 0601 2>> ¥
    /var/adm/acct/nite/accterr & 
    この例では、6 月 1 日 (0601) という日に関して、runacct コマンドが再始動されます。 runacct コマンドは、ファイル /var/adm/acct/nite(x)/statefile を読み取って、開始するときの状態を探します。runacct コマンドはバックグラウンド (&) で実行されて、 すべての INTERRUPT シグナルおよび QUIT シグナルが無視されます (nohup)。また、標準エラー出力 (2) が /var/adm/acct/nite(x)/accterr ファイルの最後 (>>) に追加されます。
  4. 特定の状態で、特定の日付に対するシステム・アカウンティング手順を再始動させるには、下記のようなコマンドを入力します。
    nohup /usr/sbin/acct/runacct 0601 MERGE 2>> ¥
     /var/adm/acct/nite(x)/accterr &
    この例では、6 月 1 日 (0601) という日に関して、runacct コマンドが始動され、MERGE 状態で開始します。 runacct コマンドはバックグラウンド (&) で実行されて、 すべての INTERRUPT シグナルおよび QUIT シグナルが無視されます (nohup コマンド)。また、標準エラー出力 (2) が /var/adm/acct/nite(x)/accterr ファイルの最後 (>>) に追加されます。

ファイル

項目 説明
/var/adm/wtmp ログイン/ログオフ・ヒストリー・ファイル。
/var/adm/pacct* プロセス・アカウンティング・ファイル。
/var/adm/acct/nite(x)/daytacct ディスク使用状況アカウンティング・ファイル。
/var/adm/qacct アクティブ・キュー・アカウンティング・ファイル。
/var/adm/fee ユーザーに課される料金のレコード。
/var/adm/acct/sum(x)/* コマンド・ファイルと合計アカウンティング要約ファイル。
/var/adm/acct/nite(x)/ptacct*.mmdd pacct ファイルの連結バージョン。
/var/adm/acct/nite(x)/active runacct メッセージ・ファイル。
/var/adm/acct/nite(x)/lock* runacct コマンドの同時呼び出しを防止します。
/var/adm/acct/nite(x)/lastdate runacct が実行された最後の日付が入っています。
/var/adm/acct/nite(x)/statefile 処理すべき現行状態が入っています。