Solaris のシステム管理 (第 2 巻)

日次アカウンティング機能の動作

次に、SunOS の日次アカウンティング機能がどのように動作するかを要約して示します。

  1. システムをマルチユーザーモードに切り替えると、/usr/lib/acct/startup プログラムが実行されます。この startup プログラムは、それぞれアカウンティング機能を呼び出す他のプログラムを実行します。

  2. acctwtmp プログラムは /var/adm/wtmpx に「ブート」レコードを追加します。このレコードには、システム名が wtmpx レコード内のログイン名として示されます。表 32-1 に、raw アカウンティングデータがどのように収集され、どこに格納されるかをまとめて示します。

    表 32-1 raw アカウンティングデータ

    /var/adm 内のファイル

    情報 

    ファイルを書くプログラム 

    書式定義ヘッダ 

    wtmpx

    接続セッション数

    login, init

    utmpx.h

     

    日付変更回数

    date

     

    リブート回数

    acctwtmp

     

    シャットダウン回数

    shutacct シェル

    pacctn

    プロセス数 

    カーネル (プロセス終了時) 

    acct.h

     

     

    turnacct switch (古いファイルの内容が 500 ブロックに達すると、新しいファイルが作成される)

     

    fee

    特別料金 

    chargefee

    acct.h

    acct/nite/disktacct

    使用ディスク領域 

    dodisk

    tacct.h

  3. turnacct プログラムが -on オプションで起動されて、プロセスアカウンティングを開始します。turnacct は、特に /var/adm/pacct 引数を使用して accton プログラムを実行します。

  4. remove シェルスクリプトが、runacct によって sum ディレクトリに保存されている pacct および wtmpx ファイルを「整理」します。

  5. login および init プログラムが、/var/adm/wtmpx にレコードを書き込み、接続セッションを記録します。すべての日付変更 (引数を指定して date を使用) も /var/adm/wtmpx に書き込まれます。acctwtmp を使用したリブートとシャットダウンも /var/adm/wtmpx に記録されます。

  6. プロセスが終了すると、カーネルが /var/adm/pacct ファイルにプロセスごとに 1 レコードを acct.h 形式で書き込みます。

    cron は、1 時間ごとに ckpacct プログラムを実行して /var/adm/pacct のサイズを調べます。このファイルが 500 ブロック (デフォルト) よりも大きくなった場合は、turnacct による切り替えが実行されます。(このプログラムは今までの pacct ファイルを他に移して新しいファイルを作成します。) pacct ファイルを小さく分けることの利点は、それらのアカウントレコードを処理するときに障害が発生し、runacct を起動し直そうとしたときに明らかになります。

  7. runacct が毎晩 cron によって実行されます。runacct/var/adm/pacctn/var/adm/wtmpx/var/adm/fee/var/adm/acct/nite/disktacct などのアカウンティングファイルを処理して、ログイン別のコマンド要約と利用状況要約を生成します。

  8. /usr/lib/acct/prdaily プログラムが runacct によって 1 日に 1 回実行され、runacct が収集した日次アカウンティング情報 (ASCII 形式) を /var/adm/acct/sum/rprt.MMDD に書き込みます。

  9. monacct プログラムが月に 1 回 (または毎会計期の終わりなど、ユーザーが決めた周期で) 実行されます。monacct プログラムは、sum ディレクトリに格納されているデータに基づいてレポートを作成します。これらのデータは runacct によって毎日更新されています。このレポートを作成後、monacctsum ディレクトリを「整理」して、新しい runacct データを格納するためのファイルを準備します。

システムがシャットダウンしたときの動作

shutdown を使用してシステムをシャットダウンした場合は、shutacct プログラムが自動的に実行されます。shutacct プログラムは /var/adm/wtmpx に理由レコードを書き、アカウンティングプロセスを無効に設定します。