Solaris のシステム管理 (上級編)

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

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

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

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

    表 19–1 raw アカウンティングデータ

    /var/adm 内のファイル

    格納される情報  

    データを書き込むプログラム 

    表記形式  

    wtmpx

    接続セッション数  

    logininit

    バイナリ 

     

    日付変更

    date

     

     

    リブート

    acctwtmp

     

     

    シャットダウン

    shutacct

     

    pacctn

    プロセス  

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

    バイナリ 

     

     

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

     

    fee

    特別料金 

    chargefee

    ASCII 

    acct/nite/disktacct

    使用ディスク領域 

    dodisk

    バイナリ 

  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 switch コマンドが実行されます。 (このプログラムは pacct ファイルを pacctn ファイルに移動して、新しいファイルを作成します)。 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 回実行され、/var/adm/acct/sum/rprt MMDD ファイルに日次アカウンティング情報を書き込みます。

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

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

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