この章では,システム課金サービスを設定および使用する方法を説明します。 この章の内容は,次のとおりです。
システム課金機能の概要,記録される対象,使用するコマンドとスクリプト,およびシステムのファイルとログ (10.1 節)
システム課金機能の設定方法 (10.2 節 )
課金機能の開始と停止の方法 (10.3 節)
システムへの接続を記録する方法,ログ・ファイル,および関連するコマンド (10.4 節)
システム上で実行中のユーザ・ジョブを記録する方法,ログ・ファイル,および関連するコマンド (10.5 節)
ディスク・ストレージの使用量を記録する方法と,そのデータを取得するための関連コマンド (10.6 節)
システム管理サービスを記録する方法と,そのデータを取得するための関連コマンド (10.7 節)
プリンタ・サービスの使用量を記録する方法と,そのデータを取得するための関連コマンド (10.8 節)
すべての課金機能の動作で利用可能なレポート機能と,その関連コマンド (10.9 節)
システム課金サービスは,課金データベースを操作し,システム・リソースの使用量およびユーザ・アクティビティの診断ヒストリの情報を取得して,レポート・ファイルを作成するために使用するシェル・スクリプトおよびコマンドです。
情報を定期的に自動収集するように,課金機能を設定することができます。 また,課金シェル・スクリプトと課金コマンドを手動で実行して,必要に応じて課金情報を得ることもできます。
課金サービスで取得できる課金情報は次のとおりです。
接続時間の合計
CPU 使用時間の合計
生成されたプロセスの数
接続セッションの数
メモリ使用量の合計
I/O 動作回数と転送された文字数
ブロック内のディスク・スペース使用量
モデム使用時間および電話接続時間の合計
各ユーザまたは各プリンタごとのプリンタ使用量 (プリント動作回数および印刷物の量)
課金機能が使用可能になると,カーネルおよび他のシステム・プロセスは,すべての課金情報のソースである課金情報データベース・ファイルに,レコードを書き込みます。
課金情報データベース・ファイルは
/var/adm
ディレクトリにあり,次のファイルが含まれています。
ファイル | 説明 |
wtmp |
ログイン/ログアウト・ヒストリ・ファイル |
utmp |
アクティブ接続セッション・ファイル |
pacct |
アクティブ・プロセス課金ファイル |
dtmp |
ディスク使用量ファイル |
課金スクリプトおよび課金コマンドは,課金情報データベース・ファイル内のレコードにアクセスし,保管,診断解析,リソース使用料請求などの目的にレコードを使用できるように,再フォーマットします。
いくつかの課金シェル・スクリプトおよび課金コマンドを使用して,次の処理を行うことができます。
データベース・ファイル・レコードをフォーマットする。
データベース・ファイル・レコードから新しいソース・ファイルを作成する。
データベース・ファイル・レコードを表示する。
複数のファイルのデータを 1 つのフォーマットされたファイルにマージする。
レポートを作成するためにファイル内のデータを要約する。
スクリプトおよびコマンド出力を,ファイル,または他のスクリプトおよびコマンドにリダイレクトしたり,引き渡すことができます。
システム課金機能では,就業時間と非就業時間を区別することができます。
非就業時間中のシステム使用率は,就業時間中のシステム使用率よりも低いと考えることができます。
非就業時間の指定は,データベース・ファイル
/usr/sbin/acct/holidays
に行います。
通常,自動課金機能を使用可能にすると,課金機能は非就業時間中に実行されます。
startup
シェル・スクリプトによって (課金機能がオンの場合) あるいは,通常,毎日実行される
runacct
スクリプトによって
/var/adm/pacct
ファイルが作成されると課金情報の取得が開始されます。
コマンド出力では,日付情報と時刻情報の順序が各利用者によって異なります。
日付指定と時刻指定の順序は,環境変数 NLTIME の設定によって変更できます。
10.1.1 課金シェル・スクリプトと課金コマンド
Tru64 UNIX オペレーティング・システムでは,14 の課金シェル・スクリプトと 20 の課金コマンドが用意されています。
いくつかのシェル・スクリプトはその中で,課金コマンドや他のシェル・スクリプトを実行します。
課金コマンドと課金シェル・スクリプトは,レコードを作成し,課金情報データベース・ファイルに書き込みます。
表 10-1
に,提供される課金コマンドおよび課金シェル・スクリプトを示します。
表 10-1: 課金コマンドおよび課金シェル・スクリプト
名前 | タイプ | 機能 |
ac |
コマンド | 接続セッション・レコードを表示する。 |
acctcms |
コマンド | バイナリ・コマンドの使用方法の要約ファイルをフォーマットする。 |
acctcom |
コマンド | 省略時の
pacct
データベース・ファイルまたは指定されたファイルのプロセス課金レコードの要約を表示する。 |
acctcon1 |
コマンド | wtmp
ファイル内のレコードを ASCII フォーマットで要約する。 |
acctcon2 |
コマンド | acctcon1
コマンドによってフォーマットされたファイルの内容を要約する。 |
acctdisk |
コマンド | 包括的なディスク使用量課金機能を実行する。 |
acctdusg |
コマンド | ディスク・ブロック使用量の課金機能を実行する。 |
acctmerg |
コマンド | 課金レコード・ファイルをマージする。 |
accton |
コマンド | プロセス課金をオンにする。 |
acctprc1 |
コマンド | ユーザ識別番号とログイン名で,acct
タイプの構造体のレコードを表示する。 |
acctprc2 |
コマンド | ユーザ識別番号とフルネームで,acct
タイプの構造体のレコードを表示する。 |
acctwtmp |
コマンド | レコードを
/var/adm/wtmp
ファイルに書き込む。 |
chargefee |
スクリプト | レコードをデータベース・ファイル
/fee
に書き込む。 |
ckpacct |
スクリプト | アクティブ・バイナリ・プロセス課金ファイル
/var/adm/acct/pacct
のサイズを検査して,ファイルが大きくなりすぎないようにする。 |
diskusg |
コマンド | ユーザ ID 番号に従ってディスク課金機能を実行する。 |
dodisk |
スクリプト | 毎日のディスク使用量課金レコードをディスク使用量課金データベース・ファイル
/var/adm/nite/dacct
に書き込む。 |
fwtmp |
コマンド | バイナリ・ファイル
/var/adm/wtmp
のレコードを ASCII フォーマットで表示して,ユーザがエラーを修正できるようにする。 |
last |
コマンド | ログイン情報を表示する。 |
lastcomm |
コマンド | 実行されたコマンドに関する情報を表示する。 |
lastlogin |
スクリプト | すべてのユーザの最終ログイン日付を
/var/adm/acct/sum/loginlog
ファイルに書き込む。 |
monacct |
スクリプト | 課金レポート・ファイルの毎月の要約を作成する。 |
nulladm |
スクリプト | adm
ユーザおよびグループによって所有され,保護コードが 664 のファイルを作成する。 |
pac |
コマンド | プリンタ課金レコードを表示する。 |
prctmp |
スクリプト | 接続セッション・レコード・ファイル
/var/adm/acct/nite/ctmp
を表示する。 |
prdaily |
スクリプト | さまざまなファイルから日次課金レコードを収集し,表示する。 |
printpw |
コマンド | /etc/passwd
ファイルの内容を表示する。 |
prtacct |
スクリプト | 日次課金ファイル
tacct
を ASCII 形式でフォーマットして表示する。 |
remove |
スクリプト |
ファイル
|
runacct |
スクリプト | 日次課金プロセスを実行する。 このコマンドは,さまざまな課金コマンドおよびシェル・スクリプトを定期的に実行して,さまざまな課金ファイルに情報を書き込みます。 |
sa |
コマンド | 課金レコードの一覧を表示する。 |
shutacct |
スクリプト | 課金機能をオフにする。 |
startup |
スクリプト | 課金機能プロセスを開始する。 |
turnacct |
スクリプト | プロセス課金ファイルの作成を制御する。 |
wtmpfix |
コマンド | /var/adm/wtmp
ファイルの日付およびタイム・スタンプの矛盾を訂正する。 |
多数のバイナリ・ファイルおよび ASCII 形式のファイルが,カーネル,または課金コマンドおよび課金シェル・スクリプトによって,作成および保守されます。
課金ファイル,特に,バイナリ形式のファイルは大きくなりすぎないように注意する必要があります。
課金コマンドおよびシェル・スクリプトによって付随的なファイルがいくつか作成されますが,一般に,これらのファイルは,プロセスが実行されている間だけ存在する一時的なファイルです。
たとえばプロセスが中断した場合など,状況によってはこれらの一時ファイルの 1 つまたは複数が,/var/adm
サブディレクトリの 1 つに残る場合があります。
これらのサブディレクトリを定期的に検査して,不要なファイルを削除する必要があります。
課金ファイルは,破壊されたり,失われたりすることもあります。
課金データベース・ファイル
/var/adm/wtmp
および
/var/adm/acct/sum/tacct
のように,日次レポートまたは月次レポートを作成するのに使用されるファイルは,データの完全性が保証されなければなりません。
これらのファイルが破壊されたり失われたりした場合,バックアップから復元することができます。
また,fwtmp
または
wtmpfix
コマンドを使用して,/var/adm/wtmp
ファイルを修正することもできます。
詳細は,10.4.2 項および10.4.1 項を参照してください。
また,acctmerg
コマンドを使用して
/var/adm/acct/sum/tacct
ファイル内のエラーを修正することができます。
詳細は,10.9.2 項を参照してください。
/var/adm/acct/nite
ディレクトリには,runacct
スクリプトが毎日繰り返し利用されるファイルが含まれています。
これらのファイルの中には,/var/adm/acct/sum
ディレクトリにバイナリ形式のファイルを持っているものがあります。
/var/adm/acct/sum
ディレクトリには,runacct
シェル・スクリプトによって更新され,また,月次レポートを作成するために
monacct
シェル・スクリプトによって利用される,累積要約ファイルが含まれています。
表 10-2
に,/var/adm
ディレクトリ内のデータベース・ファイルを示します。
表 10-2: /var/adm ディレクトリ内のデータベース・ファイル
ファイル名 | タイプ | 説明 |
dtmp |
ASCII | dodisk
シェル・スクリプトによって生成された一時的な出力が含まれる。 |
fee |
ASCII | chargefee
シェル・スクリプトからの出力が含まれる。 |
pacct |
バイナリ | 有効なプロセス課金データベース・ファイルを指定する。 プロセスが,ユーザ,別のプロセス,またはスクリプト・ファイルによって実行されると,このファイルにプロセス処理情報が書き込まれる。 |
pacctn |
バイナリ | turnacct switch
コマンドによって作成された代替の
pacct
ファイルを指定する。
システムが多数のユーザを持っていると,pacct
データベース・ファイルはすぐに大きくなってしまう。
1 つの
pacct
ファイルは,最大 500 の 1024 バイト・ブロックからなるディスク・スペースに制限されている。
これらのファイルのサイズは,runacct
シェル・スクリプトによって監視される。
新しい
pacctn
ファイルが作成されるたびに,値
n
が 1 ずつ大きくなる。 |
qacct |
バイナリ | キュー登録 (プリンタ) システム課金レコードが含まれている。
このファイルは,runacct
シェル・スクリプトによって使用される。 |
savacct |
バイナリ | システム・プロセス課金要約レコードを保存するために
sa
コマンドが使用するファイルを指定する。 |
Spacctn.mmdd |
バイナリ | mm
と
dd
でそれぞれ指定された月日ごとに
runacct
シェル・スクリプトが作成する
pacctn
ファイルを指定する。 |
usracct |
バイナリ | ユーザ・プロセス課金要約レコードを保存するために
sa
コマンドが使用するファイルを指定する。 |
utmp |
バイナリ | ユーザが接続セッションを生成するプロセスを実行すると書き込まれる,アクティブな接続セッション課金データベース・ファイルを指定する。 |
wtmp |
バイナリ | 累積ログイン/ログアウト課金データベース・ファイルを指定する。 ユーザがシステムにログインすると,このファイルに接続時間およびユーザ情報が書き込まれる。 |
表 10-3
に,/var/adm/acct/nite
ディレクトリ内のデータベース・ファイルを示します。
表 10-3: /var/adm/acct/nite ディレクトリの日次ファイル
ファイル名 | タイプ | 説明 |
active |
ASCII | 日次
runacct
シェル・スクリプト進捗ファイルを指定する。
runacct
シェル・スクリプトが実行されると,このファイルに,その進捗に関する情報が書き込まれる。
このファイルには,エラー・メッセージおよび警告メッセージも書き込まれる。 |
activemmdd |
ASCII | mm
と
dd
でそれぞれ指定される月日の,日次
runacct
シェル・スクリプト・エラー・ファイルを指定する。
このファイルは,active
ファイルと類似している。 |
cklock |
ASCII | ckpacct
シェル・スクリプトが使用するファイルを指定し,複数の
runacct
シェル・スクリプトがある時間から 24 時間実行されないようにする。
このファイルは,runacct
シェル・スクリプトが終了すると削除される。 |
cms |
ASCII | 使用中の総合日次コマンド要約ファイルを指定する。
このファイルは,/var/adm/acct/sum/cms
ファイルの ASCII バージョンである。
cms
ファイルは,runacct
シェル・スクリプトによって作成される。
runacct
は,acctcms
コマンドによって実行されて,/var/adm/acct/sum/cms
ファイルのレコードの再書き込みを行う。
monacct
シェル・スクリプトで,このファイルを初期化する。 |
ctacct.mmdd |
バイナリ | mm
と
dd
によってそれぞれ指定されている月日の,接続セッション課金レコードから得られる接続課金レコードを,tacct.h
フォーマットで指定する。
このファイルは一時ファイルであり,個々の課金期間に
daytacct
ファイルのレコードが書き込まれた後,削除される。 |
ctmp |
ASCII | 一時ログイン/ログアウト・レコード・ファイルを指定する。
このファイルには,wtmp
ファイルのレコードの再書き込みを行うために
runacct
シェル・スクリプトによって実行される課金コマンド
acctcon1
の出力が含まれている。 |
daycms |
ASCII | 日次コマンド要約ファイルを指定する。
バイナリ・ファイル
/var/adm/acct/sum/daycms
の ASCII バージョン。
runacct
シェル・スクリプトは,acctcms
コマンドを実行してファイルを作成する
prdaily
シェル・スクリプトを実行する。 |
daytacct |
バイナリ | 前日の総合課金レコードが
tacct.h
形式で含まれている。 |
dacct |
バイナリ | acctdisk
コマンドが
dodisk
シェル・スクリプトによって呼ばれたときに,毎週の総ディスク使用量課金レコードが書き込まれる。 |
lastdate |
ASCII | runacct
シェル・スクリプトが実行された最後の日を指定する。 |
lineuse |
ASCII | 端末 (tty) 回線接続時間が書き込まれる。 このファイルは,前回の課金期間中に使用された各端末回線の回線使用統計情報を提供する。 |
lock |
ASCII | cron
デーモンが 24 時間の間に 2 回以上
runacct
シェル・スクリプトを実行しないようにするために使用するファイルを指定する。
このファイルは,毎日,runacct
シェル・スクリプトが終了すると削除される。 |
log |
ASCII | runacct
スクリプトが
acctcon1
コマンドを実行すると作成される診断出力が書き込まれる。 |
owtmp |
バイナリ | wtmpfix
コマンドによる修正後に,日次
wtmp
ファイルを指定する。 |
ptacctn.mmdd |
バイナリ | mm
と
dd
でそれぞれ指定される月日ごとの,追加の日次
pacctn
ファイルを指定する。
これらのファイルは,日次プロセス課金ファイル
pacct
が 501 以上のディスク・ブロックを必要とする場合に作成される。 |
reboots |
ASCII | 前の課金期間中のシステム・リブートのリストを内容として持つ。 |
statefile |
バイナリ | 最後の
runacct
シェル・スクリプトの実行状態を指定する。 |
wtmp.mmdd |
バイナリ | mm
と
dd
でそれぞれ指定された月日の,修正された日次ログイン/ログアウト・データベース・ファイルを指定する。
前日中にシステムにログインしたユーザの接続セッション・レコードが,このファイルに書き込まれる。 |
wtmperror |
ASCII | wtmpfix
コマンドの実行中に
wtmp
ファイルが修正された場合に生成されるエラー・メッセージが記録されている。 |
wtmperrormmdd |
ASCII | mm
と
dd
でそれぞれ指定された月日について,wtmpfix
コマンドの実行中に
runacct
シェル・スクリプトがエラーを検出すると生成されるエラー・メッセージが記録されている。 |
表 10-4
は,/var/adm/acct/sum
ディレクトリ内のデータベース・ファイルを示します。
表 10-4: /var/adm/acct/sum ディレクトリ内の要約ファイル
ファイル名 | タイプ | 説明 |
cms |
バイナリ | 使用中の総合コマンド要約ファイルを指定する。
runacct
シェル・スクリプトが実行されると,総合コマンド要約ファイルを得るために,このファイルにレコードが記録されている。 |
cmsprev |
バイナリ | 前日の/var/adm/acct/sum/cms
ファイルを指定する。 |
daycms |
バイナリ | 前日のコマンド要約ファイルを指定する。
runacct
シェル・スクリプトが実行されると,前日の月次コマンド要約レコードがこのファイルに書き込まれる。 |
loginlog |
ASCII | 個々のユーザ名の,最後の月次のログイン日付のリスト。 |
rprtmmdd |
ASCII | mm
と
dd
でそれぞれ指定された月日の日次課金レポートを指定する。 |
tacct |
バイナリ | 累積課金ファイルを指定する。
このファイルは,システム使用に関する総合日次課金ファイルである。
このファイルは,runacct
シェル・スクリプトによって毎日更新される。 |
tacctmmdd |
バイナリ | mm
と
dd
でそれぞれ指定された日付の課金ファイルを指定する。 |
tacctprev |
バイナリ | 前日の
tacct
ファイルを指定する。
このファイルは,前の課金期間のバイナリ・ファイル
tacct
である。 |
表 10-5
は,/var/adm/acct/fiscal
ディレクトリ内のデータベース・ファイルを示します。
表 10-5: /var/adm/acct/fiscal ディレクトリ内の月次ファイル
ファイル名 | タイプ | 説明 |
cmsmm |
バイナリ | mm
で指定された月の,アクティブなコマンド要約ファイルを指定する。 |
fiscrptmm |
ASCII | mm
で指定された月の課金レポートを指定する。 |
tacctmm |
バイナリ | 累積総合課金ファイルを指定する。
このファイルは,システム使用についての総合課金ファイルである。
このファイルは,monacct
シェル・スクリプトによって,毎月 1 回更新される。 |
課金機能を使用するには,System Accounting Utilities サブセットをインストールしなければなりません。 このサブセットがインストールされているかどうかは,次のコマンドで確認できます。
# setld -i | grep count OSFACCTxxx installed System Accounting Utilities \ (System Administration)
このサブセットがインストールされていない場合は,setld
コマンドを使用して,RIS サーバまたは CD-ROM からインストールします。
サブセットをインストールすると,必要な課金サービスを使用可能にすることができます。
多数のユーザが競合してシステム・リソースを使用するようなシステム環境では,UNIX システム課金機能を使用することによってシステムの使用状況を追跡することができます。
この場合,追跡しようとする情報のタイプおよび量を決定する必要があります。
また,自動課金機能を設定するかどうかも決定する必要があります。
自動課金機能を使用可能にするには,/usr/spool/cron/crontabs
ディレクトリ内のファイルに課金機能コマンドおよびシェル・スクリプトを指定します。
ネットワークを形成しているすべてのマシンの課金情報を得る場合は,単一のマシンに課金機能を設定しておきます。 システム課金機能を使用可能にするには,次の手順を実行します。 以降の項で,これらの手順について詳しく説明します。
/etc/rc.config
ファイルに課金情報自動取得の設定を行います (10.2.1 項)。
qacct
ファイル,pacct
ファイル,fee
ファイルを確認します (10.2.2 項)。
/usr/sbin/acct/holidays
ファイルを編集して,就業時間,非就業時間,および休日を指定します (10.2.3 項)。
自動課金機能を起動するために,/usr/spool/cron/crontabs
ディレクトリ内のファイルを変更して,課金シェル・スクリプトおよびコマンドを実行します (10.2.4 項)。
プリント・ドライバ・ソフトウェアは,別のサーバ,デーモン,およびルーチンを使用しているため,プリンタ課金情報は,リソース課金情報とは別に処理されます。
プリンタ課金機能を設定する方法については,第 8 章を参照してください。
この章では,自動プリンタ課金機能を使用可能にする方法のみを説明します。
10.2.1 rc.config ファイルの編集
課金機能を設定するには,次の 1 行を
/etc/rc.config
ファイルに追加する必要があります。
ACCOUNTING="YES"
次のように,rcmgr
コマンドを使用して変数を設定できます。
# rcmgr set ACCOUNTING YES
startup
コマンドを使用すれば,システムをリブートしなくても課金機能を開始することができます。
詳細は,10.3 節を参照してください。
10.2.2 qacct ファイル,pacct ファイル,および fee ファイルの確認
課金が機能するためには,システム上にキュー登録課金ファイル
qacct
およびプロセス課金データベース・ファイル
pacct
が存在しなければなりません。
これらのファイルは,コンテキスト依存のシンボリック・リンク (CDSL) のパス名で,ブランク・ファイルとしてプリインストールされています。
ls
-l
ディレクトリ表示コマンドを使用すると,リンクは次のパスとして表示されます。
/usr/var/cluster/members/member0/adm/acct/fee /usr/var/cluster/members/member0/adm/acct/pacct /usr/var/cluster/members/member0/adm/acct/qacct
オリジナルのファイルがない (または誤って壊してしまった) 場合,これらのファイルを CDSL として再作成しなければなりません。
CDSL の再作成については,第 6 章
,
cdslinvchk
(8)mkcdsl
(8)
これらのファイルは
adm
ユーザおよびグループが所有し,パーミッションが 644 でなければなりません。
必要であれば,chown
コマンドおよび
chgrp
コマンドを使用して,これらの値を設定しなおしてください。
10.2.3 holidays ファイルの編集
/usr/sbin/acct/holidays
ファイルは,24 時間単位で,就業時間および非就業時間を指定します。
また,休日を指定することもできます。
休日は非就業時間に含まれます。
就業時間に含まれるのは,月曜日から金曜日までです。
非就業時間中のシステム使用率は,就業時間中のシステム使用率より低いと考えられます。
自動課金機能を使用する場合は,非就業時間中にコマンドが実行されるように設定します。
/usr/sbin/acct/holidays
ファイルが存在しない場合は作成する必要があります。
また,このファイルがすでに存在する場合は,取得しようとする課金情報に合わせて編集する必要があります。
NHOLIDAYS 環境変数を指定することによって,休日の上限数を
holidays
ファイルの中に設定できます。
10.2.4 crontab ファイルの変更
自動課金機能を使用可能にするには,crontab
コマンドを使用して,/usr/spool/cron/crontabs
ディレクトリ内のファイルを変更する必要があります。
/usr/spool/cron/crontabs
ディレクトリ内のファイルには,cron
デーモンが特定の特権の下に指定された時間に実行するコマンドが含まれています。
たとえば,/usr/spool/cron/crontabs/root
ファイル内のコマンドは,root
の特権で実行され,/usr/spool/cron/crontabs/adm
ファイル内のコマンドは,adm
の権限で実行されます。
次のコマンドとシェル・スクリプトを
/usr/spool/cron/crontabs/adm
ファイルに記述することができます。
ckpacct
このシェル・スクリプトは,プロセス課金データベース・ファイル
pacct
のサイズを検査し,大きくなりすぎないようにします。
runacct
このシェル・スクリプトは,他の課金シェル・スクリプトおよびコマンドを含んでおり,日次課金ファイルと月次課金ファイルを作成します。
runacct
シェル・スクリプトを変更して,不必要な課金のコマンドを削除することもできます。
monacct
このシェル・スクリプトは,月次要約課金ファイルを作成します。
monacct
シェル・スクリプトを変更して,不必要な課金コマンドを削除することもできます。
ac
このコマンドは,接続時間レコードを表示します。
出力先としてファイルを指定することもできます。
このコマンドを
runacct
シェル・スクリプトに追加することもできます。
pac
このコマンドは,プリンタ課金レコードを表示します。 出力先としてファイルを指定することもできます。 プリンタ課金機能を使用可能にする方法についての詳細は,10.8 節を参照してください。
dodisk
シェル・スクリプトは,/usr/spool/cron/crontabs/root
ファイルに記述することができます。
dodisk
シェル・スクリプトは,ディスク使用量課金レコードを作成します。
このシェル・スクリプトは,非就業時間中に毎週 1 回実行させます。
crontab
デーモンに対するコマンドの発行についての詳細は,第 3 章および
crontab
(1)
次の例は,課金機能コマンドおよびシェル・スクリプトが記述されている
/usr/spool/cron/crontabs/adm
ファイルの一部を示しています。
0 2 * * 1-6 /usr/sbin/acct/runacct > /usr/adm/acct/nite/fd2log& 5 * * * * /usr/sbin/acct/ckpacct& 0 4 1 * * /usr/sbin/acct/monacct& 10 3 * * * /usr/sbin/ac -p > /var/adm/timelog& 40 2 * * * /usr/sbin/pac -s&
次の例は,dodisk
シェル・スクリプトが記述されている
/usr/spool/cron/crontabs/root
ファイルの一部を示しています。
0 3 * * 4 /usr/sbin/acct/dodisk > /var/adm/diskdiag&
シェル・スクリプト
startup
および
shutacct
は,さまざまな課金機能プロセスを使用可能にあるいは使用不能に設定します。
この 2 つのスクリプトは,ログイン名としてシステム名を使用し,/var/adm/wtmp
ファイルにレコードを追加する
acctwtmp
プログラムを実行します。
startup
シェル・スクリプトは,課金機能を初期化します。
構文は次のとおりです。
/usr/sbin/acct/startup
注意
startup
スクリプトによって作成されるpacct
ファイルは,グループadm
とユーザadm
によって所有され,保護コード 664 でなければなりません。 所有権が正しくない場合,accton
コマンドは動作せず,次のメッセージが表示されます。accton: uid/gid not adm
shutacct
スクリプトは,プロセス課金を無効にし,必ず課金機能が停止してから,システムがシャットダウンするようにします。
shutacct
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/shutacct
[Reason
]
Reason
文字列は,ユーザが定義した,コマンド起動の理由です。
shutacct
シェル・スクリプトが実行されると,/var/adm/wtmp
ファイル内のシャットダウン・レコードの
ut_line
フィールドに
Reason
メッセージが書き込まれます。
次に,turnacct off
シェル・スクリプトが実行されて,実行中の課金機能を使用不能にしなければならないことをカーネルに通知します。
10.4 接続セッション課金機能
ユーザがログインまたはログアウトすると,login
コマンドおよび
init
コマンドがバイナリ・データベース・ファイル
/var/adm/wtmp
にユーザ・ログイン・ヒストリおよびユーザ・ログアウト・ヒストリのレコードを書き込みます。
バイナリ・データベース・ファイル
/var/adm/utmp
は,使用中の接続セッション・ファイルです。
ハングアップ,login
コマンドの終了,ログイン・シェルの終了が発生すると,システムはログアウト・レコードをこのファイルに書き込みます。
したがって,ログアウト数がセッション数よりも多くなることがよくあります。
注意
課金レコードが,オペレーティング・システムのバージョン 4.0A のときに作られたものである場合は,
で,ファイルの変換方法を調べてください。 wtmpconvert
(8)
接続セッション・コマンドは,/var/adm/wtmp
ファイルのレコードを有効な接続セッション課金レコードに変換できます。
接続セッション課金情報を得られるのは,/var/adm/wtmp
ファイルが存在する場合だけです。
/var/adm/wtmp
ファイルのフォーマット付きレコードには,各接続セッションに関して下記の情報が記述されています。
ユーザ・ログイン名 (/etc/passwd
ファイルから)
回線識別番号 (/etc/inittab
ファイルから)
デバイス名 (コンソールあるいは
tty23
など)
エントリのタイプ
プロセス ID 番号
プロセス終了状態
プロセス exit 状態
エントリが行われた時間
ホスト・マシン名
システム接続セッションに関する情報の取得や変更に,次の 2 つのシェル・スクリプトおよび 7 つのコマンドが使用されます。
コマンド | 機能 |
ac |
システム全体および個々のユーザの接続セッション・レコードを表示する。 |
acctcon1 |
接続セッション・レコードを要約して,それらのレコードを ASCII 形式 (各接続セッションに 1 行を使用する) で表示する。 |
acctcon2 |
acctcon1
コマンドの出力を使用して,全接続セッションの課金レコード・ファイルを ASCII 形式で作成する。 |
acctwtmp |
キーボードからレコードを入力することによって,レコードを
wtmp
ファイルに書き込めるようにする。 |
fwtmp |
ファイル構造
utmp.h
を持つファイルのレコードを表示する。 |
last |
ログイン情報を表示する。 |
lastlogin |
個々のユーザが最後にログインした日付を示すために,/var/adm/acct/sum/loginlog
ファイルを更新する。 |
prctmp |
acctcon1
コマンドが作成したセッション・レコード・ファイル (通常は
/var/adm/acct/nite/ctmp ) の内容を表示する。 |
wtmpfix |
日付変更によって影響を受ける接続セッション・レコード
wtmp
を修正し,wtmp
ファイル内のログイン名フィールドに書き込まれたログイン名を有効にする。 |
ヘッダ・ファイル
/usr/include/utmp.h
の構造は,次の接続セッション・ファイル用のレコード形式です。
/var/adm/wtmp
/var/adm/utmp
/var/adm/acct/nite/wtmp.mmdd
/var/adm/acct/nite/ctmp
ヘッダ・ファイル
/usr/include/utmp.h
は,9 つのフィールドから構成されています。
表 10-6
は,utmp
をヘッダ・ファイルのフィールド番号,メンバ名説明および必要に応じて,文字の長さを ASCII 形式で示したものです。
表 10-6: utmp ASCII 形式によるファイル構成要素
フィールド | 要素 | 説明 |
1 | ut_user |
ユーザ・ログイン名。
sizeof(ut_user)
文字が入っていなければならない。 |
2 | ut_id |
inittab
ID。
sizeof(ut_id)
文字が入っていなければならない。 |
3 | ut_line |
レコードのタイプ (たとえばデバイス名) を記述するために使用される情報を保持しているメモリ位置。
sizeof(ut_line)
文字が入っていなければならない。 |
4 | ut_pid |
プロセス ID 番号。 |
5 | ut_type |
エントリのタイプ。
いくつかのシンボリック定数値を指定できる。
シンボリック定数は,ヘッダ・ファイル
/usr/include/utmp.h
に定義される。 |
6 | ut_exit.e_termination |
プロセス終了状態。 |
7 | ut_exit.e_exit |
プロセス exit 状態。 |
8 | ut_time |
開始時間 (秒単位)。 |
9 | ut_host |
ホスト名。
sizeof(ut_host)
文字が入っていなければならない。 |
/usr/sbin/acct/wtmpfix
コマンドは,utmp.h
ヘッダ・ファイル構造体を持つファイルにおける日付とタイム・スタンプの不一致を修正し,そのレコードを表示します。
runacct
スクリプトが
wtmpfix
コマンドを実行します。
システムの起動時,あるいは
date
コマンドが実行された場合など,/var/adm/wtmp
ファイルに日付が入力されるたびに,1 組の日付変更レコードが
wtmp
ファイルに書き込まれます。
最初の日付変更レコードは,フィールド
ut_line
および
ut_type
に指定されている古い日付です。
2 番目の日付変更レコードは,ut_line
フィールドおよび
ut_type
フィールドに指定されている新しい日付です。
wtmpfix
コマンドは,これらのレコードを使用して
/var/adm/wtmp
ファイルにおけるすべての日付および日時のスタンプを同期化し,これらの 1 組のレコードを削除します。
日付変更レコードは,出力ファイルには表示されません。
wtmpfix
コマンドは,ユーザ名が英数字,$ (ドル記号),スペースのみで構成されているかなど,ユーザ名フィールド (ut_user
) の有効性も検査します。
無効なユーザ名が検出されると,wtmpfix
コマンドはログイン名を
INVALID
に変更して,診断メッセージを表示します。
wtmpfix
コマンドの構文は次のとおりです。
/usr/sbin/acct/wtmpfix
[filename
]...
filename
変数には,入力ファイル名を指定します。
省略時の入力ファイルはバイナリ・ファイル
/var/adm/wtmp
です。
10.4.2 fwtmp コマンド
fwtmp
コマンドを使用することにより,wtmp
ファイルを修正することができます。
このコマンドは,utmp.h
ヘッダ・ファイル構造体を持つファイルのバイナリ・レコードをフォーマット付き ASCII レコードに変換します。
ASCII バージョンの
wtmp
ファイルを編集することにより,不良レコードの修復や,通常のファイル保守を行うことができます。
表 10-6
に使用すべき ASCII 構造体を示しています。
システム動作中に日付変更およびリブートが起こると,/var/adm/wtmp
ファイルにレコードが書き込まれます。
wtmpfix
コマンドは,/var/adm/wtmp
ファイルのタイム・スタンプを調整します。
しかし,修正内容によっては
wtmpfix
コマンドによる検出が不可能になり,acctcon
コマンドが異常終了することがあります。
その場合,fwtmp
コマンドを使用して,/var/adm/wtmp
ファイルを修正します。
fwtmp
コマンドの構文は次のとおりです。
/usr/sbin/acct/fwtmp
[-ic
]
fwtmp
ファイルは標準入力を使用しますが,コマンドの出力としてファイルを指定することもできます。
fwtmp
コマンドでオプションを指定しないと,バイナリ・レコードは ASCII レコードに変換されます。
このコマンドのオプションについての詳細は
fwtmp
(8)
ヘッダ・ファイル
/usr/include/utmp.h
のレコードを手動で入力する場合は,表 10-6
に示されているように,utmp
ASCII 構造体メンバが使用する順に,9 つのフィールドのそれぞれにデータを入力しなければなりません。
キーボードから入力するすべてのレコード・フィールド・エントリは,スペースで区切ります。
また,ブランク文字を使用してすべての文字列フィールドを (必要ならば,最大の文字列サイズまで) 指定しなければなりません。
すべての小数値は,空の桁にはゼロ (0) を指定し,必要な数の小数点以下の桁数を持たなければなりません。
次の例は,バイナリ・ファイル
/var/adm/wtmp
のレコードを ASCII 形式のレコードに変換します。
# /usr/sbin/acct/fwtmp < /var/adm/wtmp system boot 0 20000 0000 652547412 Jan 5 11:10:12 1994 system boot 0 10062 0123 652547412 Jan 5 11:10:12 1994 bcheck bl 6 80000 0000 652547413 Jan 5 11:10:13 1994 cat cr 16 80000 0000 652547414 Jan 5 11:10:14 1994 rc rc 17 80000 0000 652547485 Jan 5 11:11:25 1994 hoffman co console 147 70000 0001 652547495 Jan 5 11:11:35 1994 hoffman p4 pty/ttyp4 2156 80000 0002 652650095 Jan 6 15:41:35 1994 LOGIN p4 pty/ttyp4 2140 60000 0000 652649075 Jan 6 15:24:35 1994 LOGIN p4 pty/ttyp4 2140 80000 0000 652649086 Jan 6 15:24:46 1994
/var/adm/wtmp
ファイルを修正する手順は次のとおりです。
作業ディレクトリを
/var/adm/acct/nite
に変更します。
fwtmp
コマンドを使用して,wtmp
ファイルの ASCII バージョンを作成します。
# fwtmp < wtmp.0617 > wtmp_temp
一時ファイルを編集し,不正なレコードを削除します。
fwtmp
コマンドを使用して
wtmp
ファイルを作成し直します。
# fwtmp -ic < wtmp_temp > wtmp.0617
acctwtmp
コマンドを使用することにより,コマンドを起動した理由を示す文字列,現在の時刻,および日付を
utmp.h
構造体形式のファイル (通常は
/var/adm/wtmp
ファイル) に追加することができます。
runacct
,startup
,および
shutacct
シェル・スクリプトが
acctwtmp
コマンドを実行し,runacct
スクリプトの実行時期およびシステム課金機能を起動または停止した時期を記録します。
acctwtmp
コマンドの構文は次のとおりです。
/usr/sbin/acct/acctwtmp
reason
reason
変数は最大の
sizeof(ut_line)
文字を持ち," " (引用符) で囲まなければなりません。
10.4.4 ac コマンド
ac
コマンドは,表 10-6
に記載されている
utmp
ファイル構造体を持つファイルの接続セッション・レコードを表示します。
このコマンドを使用して,システム診断や,ユーザへの請求金額の決定ができます。
ac
コマンドは,すべてのユーザの接続時間の合計,または指定したユーザの接続時間の合計を表示します。
接続時間は,最も近似の小数点以下第 2 位に丸めた時間で表示されます。
総ユーザ接続セッション・ファイルを自動的に作成するには,ac
コマンドを
/usr/spool/cron/crontab/adm
ファイルに記述するか,または
runacct
シェル・スクリプトを変更して
ac
コマンドが含まれるようにします。
自動課金機能の設定についての詳細は,10.2.4 項を参照してください。
ac
コマンドの構文は次のとおりです。
/usr/sbin/ac
[-d
]
[-p
]
[-w filename
]
[username
...]
このコマンドのオプションの詳細は,
ac
(8)
オプションを省略した場合は,すべてのユーザのシステム接続時間の合計を表示します。 次に例を示します。
# /usr/sbin/ac "total 48804.26"
次のコマンドは,ユーザ名ごとの合計接続時間を表示します。
# /usr/sbin/ac -p buckler 61.44 fujimori 530.94 newsnug 122.38 dara 0.10 root 185.98 buchman 339.33 russell 53.96 hoff 200.43 hermi 157.81 total 1968.02
最後の行には,リストされているすべてのユーザの接続時間の合計が表示されます。
10.4.5 acctcon1 コマンド
acctcon1
コマンドは,ヘッダ構造体
utmp.h
を持つファイルのバイナリ・セッション・レコードを ASCII 形式に変換します。
個々の接続セッションに対して,1 つのレコードが作成されます。
runacct
シェル・スクリプトは,acctcon1
コマンドを使用して,lineuse
および
reboots
ファイルを作成します。
これらのファイルは日次レポート
/var/adm/acct/sum/rprtmmdd
に含まれます。
acctcon1
コマンドの構文は次のとおりです。
/usr/sbin/acct/acctcon1
[-l file
]
[ -o file
]
[-pt
]
コマンドへの入力としてファイルを指定する必要があります。
このコマンドのオプションの詳細は,
acctcon1
(8)
次に示すのは,/var/adm/acct/nite/lineuse
ファイルの例です。
このコマンドは,指定されたファイルに ASCII 回線使用量形式でレコードを書き込みます。
この形式は,回線使用量を追跡し,不良回線を識別し,ユーザがログインしたポートの参照指定,および,現在実行中の接続セッションの日付およびタイプ・スタンプをいれるのに役立ちます。
# acctcon1 -l line_file < /var/adm/wtmp | more line_file TOTAL DURATION IS 57 MINUTES LINE MINUTES PERCENT # SESS # ON # OFF pty/ttyp4 37 64 3 3 7 console 26 45 2 2 4 pty/ttyp5 7 11 1 1 3 pty/ttyp6 0 0 0 0 2 TOTALS 69 - 6 6 16
上の例で,ASCII 回線使用量形式は,次のことを指定します。
システムがマルチユーザ状態にあった合計時間 (分)
回線名
課金期間中に使用されたセッション時間 (分)
合計期間に対する使用中になっていた時間 (分) の比率
ポートがアクセスされた回数 (4 番目と 5 番目の欄)
回線上でのログアウトおよびその他の割り込みの回数
最後の欄を 4 番目の欄と比較して,回線が不良であるかどうかを判定することができます。
次は,/var/adm/acct/reboots
ファイルの例です。
ASCII オーバオール・レコード形式でファイルにレコードを書き込みます。
ASCII オーバオール・レコード形式では,開始時間,終了時間,再起動の回数,日付変更の回数が指定されます。
# acctcon1 -o overall_file < /var/adm/wtmp | more overall_file from Thu Jun 13 17:20:12 2002 EDT to Fri Jun 14 09:56:42 2002 EDT 2 date changes 2 acctg off 0 run-level S 2 system boot 2 acctg on 1 acctcon1
オーバオール・レコード形式には,from
および
to
フィールドが含まれています。
このフィールドには,最後の課金レポートが作成された時間および現在のレポートの時間が指定されます。
これらのフィールドの後には,/var/adm/wtmp
ファイルのレコードのリストが続きます。
10.4.6 acctcon2 コマンド
runacct
シェル・スクリプトは
acctcon2
コマンドを起動し,acctcon1
コマンドによって作成される接続セッション・ファイル
/var/adm/acct/nite/ctmp
を ASCII 形式からバイナリ形式に変換します。
10.4.7 prctmp シェル・スクリプト
prctmp
シェル・スクリプトは,acctcon1
コマンドによって作成される
/var/adm/acct/nite/ctmp
ファイルなどの,utmp.h
ヘッダ・ファイル構造体を持っている接続セッション・データベース・ファイルに欄見出しを書き込みます。
prctmp
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/prctmp
[filename
]
詳細は,
prctmp
(8)10.4.8 lastlogin シェル・スクリプト
lastlogin
シェル・スクリプトは,ユーザがシステムに最後にログインした日付を
/var/adm/acct/sum/loginlog
ファイルに書き込みます。
このスクリプトは,printpw
コマンドを実行して,/etc/passwd
ファイルのログイン名とユーザ識別番号にアクセスします。
CMS 状態において
runacct
シェル・スクリプトが
lastlogin
シェル・スクリプトを起動します。
lastlogin
シェル・スクリプトを手動で実行して,日次レポート
/var/adm/acct/sum/rprtmmdd
に含まれている
/var/adm/acct/sum/loginlog
ファイルを更新することもできます。
lastlogin
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/lastlogin
last
コマンドは,/var/adm/wtmp
ファイル内のすべてのログイン・レコードを入力と逆の順序で表示します。
各ログイン・セッションについて,次の情報が示されます。
セッションが開始された時刻
セッションの期間
セッションが発生した端末
状況によっては次の情報も含まれます。
リブート時の終了
連続セッション
last
コマンドの構文は次のとおりです。
/usr/bin/last
[-#
]
[username
...]
[tty
...]
省略時の設定ではすべてのレコードが表示されます。 ユーザ名あるいは端末を指定することもできます。
最近の 3 つの
root
ログインに関する情報を表示させる場合は,次のように入力します。
# last -3 root root ttyp1 shout Fri Jun 21 10:56 still logged in root ttyp1 raven Fri Jun 21 08:59 - 09:00 (00:00) root ttyp0 raven Thu Jun 20 15:29 - 15:54 (00:24)
コマンド,シェル・スクリプト,またはプログラムがシステムで実行されると,プロセス課金が発生します。
プロセスが終了すると,カーネルはプロセス課金レコードをデータベース・ファイル
pacct
に書き込みます。
プロセス課金レコードによって,プログラムの実行にかかわる統計情報を監視することができます。
プロセスの実行に関する情報は,ps
コマンドを使用して取得します。
accton
コマンドは
/var/adm/pacct
ファイルを作成し,プロセス課金をオンにします。
pacct
ファイルは常に成長します。
ckpacct
コマンドは
pacct
ファイルのサイズを調べ,pacct
ファイルが指定されたサイズよりも大きい場合には,pacctn
ファイルを作成します。
データベース・ファイル
pacct
には,次のようなプロセスに関する情報が含まれています。
プロセス・タイプ (たとえば子プロセス)
プロセスの終了状態
ユーザ識別番号
グループ識別番号
プロセスの起動端末
開始時間,ユーザ時間,システム時間,および CPU 時間
使用されたメモリの量
転送された I/O 文字数
読み書きされた 1024 バイトのブロックの数
プロセスの起動に使用したコマンド名
プロセス課金ファイルのレコードは
tacct
形式であり,ヘッダ・ファイル構造体
acct
によって設定されます。
ヘッダ・ファイル構造体
acct
はヘッダ・ファイル
/usr/include/sys/acct.h
に定義され,最高 18 欄の課金情報を含んでいます。
構造体メンバ
tacct
は,プライベート・ヘッダ・ファイル
tacct.h
に定義されます。
表 10-7
に,tacct
形式のファイルの欄番号,見出し,および説明を示します。
表 10-7: tacct ファイル・フォーマット
欄 | 見出し | 説明 |
1 | UID |
/etc/passwd
ファイルから得られるユーザ識別番号。 |
2 | LOGNAME |
/etc/passwd
ファイルから得られるユーザ・ログイン名。 |
3 | PRI_CPU |
就業時間内の CPU 実行時間。 これは,就業時間内の CPU 実行時間のうちユーザに課金された合計時間 (秒単位) である。 |
4 | NPRI_CPU |
非就業時間内の CPU 実行時間。 これは,非就業時間内の CPU 実行時間のうちユーザに課金された合計時間 (秒単位) である。 |
5 | PRI_MEM |
就業時間内のメモリ占有時間。 これは,総 CPU 時間 (分単位) に,使用されたメモリの平均サイズを掛けたものである。 |
6 | NPRI_MEM |
非就業時間内のメモリ占有時間。 これは,総 CPU 時間 (分単位) に,メモリの平均サイズを掛けたものである。 |
7 | PRI_RD/WR |
就業時間の動作時に転送された合計文字数。 |
8 | NPRI_RD/WR |
非就業時間の動作時に転送された合計文字数。 |
9 | PRI_BLKIO |
就業時間内の読み取りおよび書き込み動作時に転送された総 I/O ブロック数。 I/O ブロックのバイト数は,実装方法によって異なる。 |
10 | NPRI_BLKIO |
非就業時間内の読み取りおよび書き込み動作時に転送された合計 I/O ブロック数。 I/O ブロックのバイト数は,実装方法によって異なる。 |
11 | PRI_CONNECT |
接続が行われていた総就業時間数 (秒)。 |
12 | NPRI_CONNECT |
接続が行われていた総非就業時間数 (秒)。 |
13 | DSK_BLOCKS |
使用された総ディスク・ブロック数。 |
14 | PRINT |
システムのプリンタにキュー登録された総ページ数。 |
15 | FEES |
課金対象のユニット数。
この値は,シェル・スクリプト
/usr/sbin/acct/chargefee
で指定される。 |
16 | PROCESSES |
課金期間中にユーザが生成した総プロセス数。 |
17 | SESS |
課金期間中のユーザの総ログイン回数。 |
18 | DSAMPS |
DSK_BLOCKS
欄に指定されている総ディスク・ブロック数を調べるためにディスク課金コマンドが使用された回数の合計。
DSK_BLOCKS
欄の値を
DSAMPS
欄の値で除算することにより,課金期間中に使用された平均ディスク・ブロック数を求めることができる。 |
プロセス課金のシェル・スクリプトおよびコマンドを使用することによって,コマンド群およびそれらのコマンドを処理するために使用されたリソースに関する情報を統合することができます。
以降の各項では,プロセス課金のシェル・スクリプトおよびコマンドについて説明します。
10.5.1 accton コマンド
accton
コマンドは,プロセス課金を開始したり終了したりします。
accton
コマンドの構文は次のとおりです。
/usr/sbin/acct/accton
[filename
]
filename
変数を省略すると,プロセス課金は使用不能になります。
filename
変数を指定すると,プロセス課金が有効になり,カーネルは指定したファイルにプロセス課金レコードを書き込みます。
通常,このファイルには
pacct
ファイルを指定しますが,別のプロセス課金データベース・ファイルを指定することもできます。
指定するファイルは,/var/adm
ディレクトリに存在し,ユーザ
adm
によって所有され,ログイン・グループ
adm
のメンバでなければなりません。
注意
シェル・スクリプト
runacct
およびturnacct
はプロセス課金データベース・ファイルpacct
を使用するため,pacct
ファイル以外のプロセス課金データベース・ファイルを指定するとシェル・スクリプトrunacct
およびturnacct
が影響を受けます。
turnacct
シェル・スクリプトは,プロセス課金機能を制御し,プロセス課金ファイルを作成します。
このシェル・スクリプトを使用するには,スーパユーザでなければなりません。
turnacct
スクリプトの構文は次のとおりです。
turnacct
[
on
| off
| switch
]
turnacct on
シェル・スクリプトは,引数として
pacct
ファイルを指定して
accton
シェル・スクリプトを実行し,プロセス課金を使用可能に設定します。
turnacct off
シェル・スクリプトは,引数を指定しないで
accton
コマンドを実行し,プロセス課金を使用不能に設定します。
turnacct
switch
シェル・スクリプトは,pacct
ファイルの内容を
pacctn
ファイルに移動して,新しい
pacct
ファイルを作成します。
10.5.3 ckpacct シェル・スクリプト
pacct
ファイルは拡張できます。
指定した上限を超えて
pacct
ファイルが大きくなり,かつディスク・スペースが十分にある場合,ckpacct
スクリプトは
turnacct
switch
シェル・スクリプトを実行して
pacct
ファイルの内容を
pacctn
ファイルに移動し,新しい
pacct
ファイルを作成します。
ckpacct
スクリプトを定期的に実行するように,cron
デーモンを設定することができます。
詳細は,10.2.4 項を参照してください。
ckpacct
シェル・スクリプトの構文は次のとおりです。
ckpacct
[blocksize
]
blocksize
変数には,pacct
ファイルの上限サイズをディスク・ブロック単位で指定します。
省略時のサイズは 500 ディスク・ブロックです。
ckpacct
シェル・スクリプトを実行すると,/var/adm
ディレクトリで使用できるディスク・ブロックの数が報告されます。
使用可能なブロックの数が上限サイズより少ないと,プロセス課金はシェル・スクリプト
turnacct off
の呼び出しにより使用不能になります。
また,診断メッセージが表示され,そのメッセージが環境変数
MAILCOM
で指定されているアドレスに送られます。
環境変数
MAILCOM
を下記のコマンドに設定するには,putenv
関数を使用します。
mail root adm
次の診断メッセージは,/var/adm
ディレクトリに 224 のディスク・ブロックが残っていることを示しています。
ckpacct: /var/adm too low on space (224 blocks) "turning acctg off"
ckpacct
シェル・スクリプトは,/var/adm
ディレクトリに十分なスペースが確保されるまで,診断メッセージを表示し続けます。
10.5.4 acctcom コマンド
acctcom
コマンドは,プロセス課金レコードの要約を表示します。
コマンド・オプションを使用すれば,出力のタイプと形式を指定することができます。
acctcom
コマンドを使用するには,スーパユーザである必要はありません。
acctcom
コマンドは,終了したプロセスに関する情報だけを表示します。
実行中のプロセスについての情報を表示するには,ps
コマンドを使用します。
acctcom
コマンドの構文は次のとおりです。
/usr/bin/acctcom
[option
...]
[filename
...]
filename
変数を省略すると,pacct
ファイルを使用してプロセス課金レコードを取得します。
filename
変数を指定することにより,ヘッダ・ファイル
acct.h
を持つ別のプロセス課金ファイルを指定することができます。
2 つ以上の
filename
変数を指定すると,acctcom
コマンドは入力順にファイルを読み取ります。
コマンド・オプションを指定しない場合は,省略時の出力として,欄ヘッダ形式の次のような情報が含まれます。
課金機能が開始された日付と時間
コマンド名
ユーザ名
端末名
プロセス起動時間
プロセス終了時間
実時間 (秒)
CPU 時間 (秒)
平均メモリ・サイズ (単位 K バイト)
このコマンドのオプションについての詳細は,
acctcom
(8)
省略時のプロセス課金の要約の出力例は次のとおりです。
# /usr/bin/acctcom /var/adm/pacct1 ACCOUNTING RECORDS FROM: Mon Jun 17 02:00:00 2002 COMMAND START END REAL CPU MEAN NAME USER TTYNAME TIME TIME (SECS) (SECS) SIZE(K) #sa root ttyp1 11:59:00 11:59:00 0.77 0.01 0.00 ls root ttyp1 11:59:04 11:59:04 0.11 0.01 0.00 uugetty root ? 11:58:39 11:59:48 69.53 0.01 0.00 #ls root ttyp1 11:59:55 11:59:55 0.30 0.01 0.00 uugetty root ? 11:59:49 12:00:58 69.48 0.01 0.00 cp adm ? 12:05:01 12:05:01 0.33 0.01 0.00 chmod adm ? 12:05:01 12:05:01 0.27 0.01 0.00 #df adm ? 12:05:02 12:05:02 0.38 0.01 0.00 awk adm ? 12:05:02 12:05:02 0.58 0.01 0.00 sed adm ? 12:05:02 12:05:02 0.56 0.01 0.00
sa
コマンドは,プロセス課金情報を要約します。
このコマンドを使用すれば,大量の課金情報を管理しやすくなります。
sa
コマンドで作成されたファイルには,有効なプロセス課金情報がすべて含まれています。
sa
コマンドの構文は次のとおりです。
/usr/sbin/sa
[options
...]
[filename
]
filename
変数には,acct.h
ヘッダ・ファイル構造体を持つプロセス課金ファイルを指定します。
filename
変数を省略すると,pacct
ファイルが使用されます。
オプションを指定しないで
sa
コマンドを実行すると,省略時の出力は,見出しのない 6 つの欄で構成されることになります。
あるコマンド・オプションは,欄が 6 つに増えてより多くの情報を含むことができます。
オプションを指定して,フォーマットを変更したり,識別接尾語を含む補足情報を出力することができます。
このコマンドのオプションの詳細は,
sa
(8)
次に示すのは,sa
コマンドの出力の省略時の形式の例です。
# /usr/sbin/sa 798 277.24re 0.08cpu 3248790avio 0k 7 33.42re 0.08cpu 103424avio 0k csh 14 0.08re 0.00cpu 127703avio 0k mv 40 0.34re 0.00cpu 159968avio 0k cp 2 0.01re 0.00cpu 132448avio 0k acctwtmp 34 0.13re 0.00cpu 133517avio 0k chmod 23 0.10re 0.00cpu 139136avio 0k chgrp 25 0.11re 0.00cpu 144768avio 0k chown 36 0.15re 0.00cpu 133945avio 0k dspmsg 32 0.18re 0.00cpu 134206avio 0k cat | | | | | [6] | | | | [5] | | | [4] | | [3] | [2] [1]
コマンドの実行回数
-c オプションを指定すると,全コマンドの実行回数に占める,そのコマンドの実行回数の比率を示す欄が,さらに追加されます。 [例に戻る]
実時間の合計
-c オプションを指定すると,実時間の比率を示す欄が,さらに追加されます。 [例に戻る]
CPU 時間
オプションを指定することによって,システム CPU 時間とユーザ CPU 時間の合計,ユーザ CPU 時間,システム CPU 時間,あるいはシステム CPU 時間に対するユーザ CPU 時間の比率を,それぞれ欄に表示できます。
-c オプションを指定すると,実時間の比率を示す欄がさらに追加されます。 また,-t オプションを指定すると,ユーザ CPU 時間とシステム CPU 時間の合計に対する実時間の比率を示す欄が,さらに追加されます。 [例に戻る]
ディスク入出力動作についての情報 (I/O 動作の平均回数または総数) [例に戻る]
メモリ時間全体で使用されたブロック数
K ブロック単位 (ブロック数に 1024 を積算した値)。 [例に戻る]
コマンド名 [例に戻る]
次の例では,下記のような各比率を表示する 3 つの欄が,省略時の形式に追加されています。
# /usr/sbin/sa -c 645 100.00% 324.10re 100.00% 0.02cpu 100.00% 6171050avio 0k 2 0.31% 25.70re 7.93% 0.02cpu 100.00% 107392avio 0k csh 6 0.93% 0.04re 0.01% 0.00cpu 0.00% 132928avio 0k mv 38 5.89% 0.33re 0.10% 0.00cpu 0.00% 163357avio 0k cp 2 0.31% 0.01re 0.00% 0.00cpu 0.00% 132992avio 0k cat 26 4.03% 0.11re 0.03% 0.00cpu 0.00% 136832avio 0k chmod 24 3.72% 0.10re 0.03% 0.00cpu 0.00% 139824avio 0k chgrp | | [3] | [2] [1]
追加の欄では,次の情報を表示します。
全コマンドの総実行回数に対する各コマンドの実行回数の比率を示す。 [例に戻る]
欄 1 に指定されている回数だけ,そのコマンドの実行に要した総実時間合計の,全コマンドの実行に要した総実時間に対する比率を示す。 [例に戻る]
全コマンドの実行に要した総 CPU 時間に対して,欄 1 で指定されている回数だけの当該コマンドの実行に要した総 CPU 時間の比率を示す。 [例に戻る]
acctcms
コマンドは,プロセス課金レコードから,ASCII 形式およびバイナリ形式のコマンド要約ファイルを作成します。
pacct
ファイルなどの,/usr/include/sys/acct.h
ヘッダ・ファイル構造体を持っているプロセス課金ファイルを指定します。
acctcms
コマンドは,レコードをソートして,課金期間中に使用された個々のコマンドについての統計情報を 1 つのレコードに統合します。
このレコードから,最も頻繁に使用されたコマンドおよび最も多くのシステム時間を使用したコマンドが分かります。
CMS 状態において
runacct
シェル・スクリプトが
acctcms
コマンドを実行します。
このコマンドを手動で実行して,コマンド要約レポートを作成することもできます。
acctcms
コマンドの構文は次のとおりです。
/usr/sbin/acct/acctcms
[-acjnopst
]
filename
...
オプションを指定しないで
acctcms
コマンドを実行すると,メモリ占有時間の多い順に出力されます。
メモリ占有時間は,プロセスによって使用されたメモリの K バイト数に,使用されたバッファ時間を積算した値です。
省略時の設定は,バイナリ出力です。
メモリ占有時間は,次の計算によって求められます。
メモリ占有時間 = [(秒単位の CPU 時間) * (平均メモリ・サイズの k バイト数)] / 60
このコマンドのオプションの詳細は,
acctcms
(8)
注意
acctcms
コマンドを使用して要約ファイルを ASCII 形式で作成すると,個々のコマンド・レコードは 81 文字以上で構成され,10 文字/インチの固定幅フォントが指定されている場合は全体幅が 8.5×11 インチの用紙を使用することができます。 レコードの一部が欄の幅を超えると,その部分は次の行に移動されます。
次に示すのは,COMMAND NAME 欄で
***other
が指定されている行に,1 回しか実行されなかったコマンド群についての統計情報が表示されている ASCII 出力の例です。
# acctcms -a -j /var/adm/pacct1 TOTAL COMMAND SUMMARY COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS NAME CMDS KCOREMIN CPUMIN REALMIN SIZEK CPUMIN FACTOR TRNSFD READ TOTALS 9377 0.00 0.36 26632.67 0.00 0.00 0.00 17768213 100529 chmod 34 0.00 0.00 .15 0.00 0.00 0.07 5785856 64 ln 4 0.00 0.00 0.01 0.00 0.00 0.78 422016 16 xterm 9 0.00 0.03 537.41 0.00 0.00 0.00 22948288 536 getcons 8 0.00 0.00 0.14 0.00 0.00 0.07 26636992 102 cfe2.20 4 0.00 0.00 0.09 0.00 0.00 0.12 182464 155 dump 22 0.00 0.00 14.91 0.00 0.00 0.00 69402112 128 whoami 4 0.00 0.00 0.03 0.00 0.00 0.36 7405952 27 restore 40 0.00 0.00 49.16 0.00 0.00 0.00 34247488 1316 ***other 25 0.00 0.00 3546.88 0.00 0.00 0.00 35904984 737 hostname 2 0.00 0.00 0.01 0.00 0.01 0.94 223104 14
HOG FACTOR (使用効率) は,総 CPU 時間を実時間合計で除算した値です。
10.5.7 acctprc1 コマンド
acctprc1
コマンドは,/usr/include/sys/acct.h
ヘッダ・ファイル構造体を持つファイルからプロセス課金レコードを読み取り,ユーザ識別番号と対応するログイン名を追加し,ASCII 形式でレコードを表示します。
ログイン・セッション・レコードは,ユーザ識別番号およびログイン名に従ってソートされます。
使用しているシステムに,同じユーザ識別番号を持つ複数のユーザが存在する場合は,pacct
ファイルではなく,/var/adm/acct/nite
ディレクトリ内のプロセス課金ファイルを使用しなければなりません。
PROCESS 状態において
runacct
シェル・スクリプトが
acctprc1
コマンドを実行します。
また,このコマンドは手動で実行することもできます。
acctprc1
コマンドの構文は次のとおりです。
/usr/sbin/acct/acctprc1
[filename
]
filename
変数には,/usr/include/utmp.h
ヘッダ・ファイル構造体で定義された形式でログイン・セッションのリストが入っているファイルを指定します。
filename
変数を省略すると,ログイン名は
/etc/passwd
ファイルから得られます。
このコマンドの出力は,見出しのない次の 7 つの欄を持つ形式で情報を指定します。
ユーザ識別番号
ログイン名
プロセスが就業時間中に使用した CPU 時間 (秒)
プロセスが非就業時間中に使用した CPU 時間 (秒)
転送された文字の総数
読み取りおよび書き込みが行われたブロックの総数
平均メモリ・サイズ (K バイト単位)
次に示すのは,acctprc1
コマンドとその出力例です。
# /usr/sbin/acct/acctprc1 < /usr/adm/pacct 0 root 0 1 17228 172 6 4 adm 0 6 46782 46 16 0 root 0 22 123941 132 28 9261 hoffmann 6 0 17223 22 20 9 lp 2 0 20345 27 11 9261 hoffmann 0 554 16554 20 234
acctprc2
コマンドは,acctprc1
コマンドが作成したレコードを読み取り,ユーザ識別番号とログイン名に従ってそれらのレコードを要約し,ソートされた要約結果を総合課金バイナリ・レコードとして
tacct
ファイル・フォーマットで表示します。
acctprc2
コマンドによって作成されたバイナリ・ファイルは,acctmerg
コマンドを使用して日次要約課金レコード・ファイルを作成することにより,他の総合課金ファイルとマージすることができます。
PROCESS 状態において
runacct
シェル・スクリプトが
acctprc2
コマンドを実行します。
このコマンドは手動でも実行することができます。
10.5.9 lastcomm コマンド
lastcomm
コマンドは,pacct
ファイルにあるコマンド実行情報を,時間の新しい順に表示します。
各プロセスについて,次の情報が表示されます。
コマンド名
S
フラグまたは
F
フラグ
S
フラグは,当該コマンドがスーパユーザによって実行されたことを示します。
F
フラグは,当該コマンドが子プロセスの作成後に実行され,後続のシステム・コール
exec
がなかったことを示します。
コマンドを発行したユーザの名前
コマンドを発行した端末
使用した CPU 時間 (秒数)
プロセスを起動した時間
lastcomm
コマンドの構文は次のとおりです。
/usr/bin/lastcomm
[command
]
[username
]
[tty
]
次の例は,root
によって実行された
sed
コマンドに関する情報を示したものです。
# lastcomm sed root sed S root ttyp0 0.01 secs Fri Jan 21 11:34 sed S root ttyp0 0.01 secs Fri Jan 21 11:34
ディスク使用量課金機能は,シェル・スクリプト
dodisk
によって実行されます。
dodisk
シェル・スクリプトは,diskusg
コマンドまたは
acctdusg
コマンドを使用して,中間 ASCII ファイル
/var/adm/dtmp
に情報を書き込みます。
dodisk
スクリプトは,中間ファイルを
acctdisk
コマンドの入力として使用してバイナリ総合課金データベース・ファイル
/var/adm/acct/nite/dacct
を作成します。
dodisk
スクリプトは,すべてのファイル・システムあるいはファイル・システム・データベース・ファイル
/etc/fstab
で指定されているファイル・システムでディスク課金機能を実行します。
/var/adm/acct/nite/dacct
ファイルに他の課金情報を組み込むことにより,完全な課金レポートを作成することができます。
次に例を示します。
# /usr/sbin/acct/dodisk # /usr/sbin/acct/prtacct /var/adm/acct/nite/dacct
ディスク使用量課金情報を取得するには,dodisk
シェル・スクリプトを使用します。
dodisk
スクリプトは,自動的に実行されるように
cron
デーモンに対して設定することも,手動で実行することもできます。
dodisk
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/dodisk
[-o
]
[filesystem
...]
/usr/sbin/acct/dodisk
[device special file
...]
-o
オプションを使用することにより,UFS ファイル・システムあるいは AdvFS ファイルセットのマウント・ポイントに対してディスク使用量課金機能を実行できるように
filesystem
変数を指定することができます。
-o
オプションを指定しない場合は,次の例のように,この変数には raw デバイス特殊ファイルあるいはキャラクタ・デバイス特殊ファイルを指定する必要があります。
# /usr/sbin/acct/dodisk /dev/rdisk/dsk3c
引数の指定を省略すると,ディスク課金機能はデータベース・ファイル
/etc/fstab
に記述されている UFS デバイス特殊ファイルに対して実行されます。
詳細については,
fstab
(4)
注意
スワップ領域が
/etc/fstab
ファイルに指定されていると,dodisk
シェル・スクリプトは正しく実行されません。 この場合,特定のファイル・システムだけを使用するようにdodisk
シェル・スクリプトを編集するか,dodisk
シェル・スクリプトを実行して課金情報が必要なファイル・システムを指定します。
-o
オプションを指定すると,シェル・スクリプト
dodisk
は,diskusg
コマンドではなく
acctdusg
コマンドを使用して,より完全であるが低速なバージョンのディスク課金機能を実行します。
-o
オプションを指定して
filesystem
変数を指定する場合は,デバイス特殊ファイル名ではなくマウント・ポイントを指定します。
10.6.2 diskusg コマンド
diskusg
コマンドは,ディスク課金レコードを表示します。
diskusg
コマンドは,/etc/passwd
ファイルからユーザ・ログイン名と識別番号を取得します。
diskusg
コマンドの構文は次のとおりです。
/usr/sbin/acct/diskusg
[-options
]
[filesystems
]
このコマンドのオプションの詳細は,
diskusg
(8)
diskusg
コマンドは,ASCII 形式ファイル
/var/adm/dtmp
を出力として生成します。
このファイルは,ASCII 形式レコードをバイナリ形式の総合課金レコードに変換し
/var/adm/acct/nite/dacct
ファイルを生成する
acctdisk
コマンドの入力として使用されます。
これらのレコードを他の課金レコードとマージすることにより日次総合課金レポートが作成されます。
diskusg
コマンドによって作成される各出力レコードには,ユーザ識別番号,ログイン名,およびユーザに割り当てられたディスク・ブロックの総数が含まれます。
diskusg
コマンドはユーザ i ノード・レコードを検査するため,空のディレクトリを含め,すべてのディスク・スペースが課金の対象となります。
次に示すのは
diskusg
コマンドの実行例です。
# /usr/sbin/acct/diskusg /dev/rdisk/dsk3c 0 root 63652 1 daemon 84 2 bin 71144 4 adm 976 5 uucp 3324 322 homer 2 521 whistler 2 943 cellini 363 1016 pollock 92 1098 hopper 317
ファイル・システムに対して raw デバイス特殊ファイルを指定する必要があります (たとえば
/dev/rdisk/dsk3c
)。
ファイル・システムはターゲット・デバイス上になければなりません。
10.6.3 acctdusg コマンド
acctdusg
コマンドは,diskusg
コマンドよりも完全なディスク課金情報を取得します。
dodisk
シェル・スクリプトを
-o
オプション付きで実行すると,acctdusg
コマンドが呼び出されて
/var/adm/dtmp
ファイルが作成されます。
acctdusg
コマンドの構文は次のとおりです。
acctdusg
[-u filename
]
[-p filename
]
このコマンドのオプションの詳細は,
acctdusg
(8)
このコマンドの出力ファイルにはディスク使用量バイナリ・ファイル (通常は
/var/adm/dtmp
) を使用します。
acctdusg
コマンドは,dodisk
シェル・スクリプトによって実行されると,dodisk
スクリプトで指定されたファイル・システムを入力として使用します。
acctdusg
コマンドへの入力は,通常,find /
-print
コマンドから引き渡されたファイルのリストです。
このコマンドは,ファイル・パス名とユーザのログイン・ディレクトリ ($HOME
) を比較します。
ファイル・パス名がユーザのログイン・ディレクトリと同じであれば,当該ユーザはそのファイルについて課金されます。
したがって,ファイルが置かれているディレクトリは,ディスク・スペースに対してユーザに課金する際の決定要素となります。
ログイン・ディレクトリ以外のディレクトリに存在するファイルが使用したディスク・ブロック数は,-u
オプションを使用して表示することができます。
acctdusg
コマンドは,各ファイルごとに,ファイルに割り当てられたディスク・ブロック (隠しブロックや間接ブロックを含む) の数をハード・リンクの数で除算した値を計算します。
2 人以上のユーザが同じファイルとのリンクを持っている場合は,acctdusg
コマンドは,当該ファイルの総ディスク・スペースの料金をユーザ数で割った値で各ユーザに課金します。
acctdusg
コマンドの出力は,ユーザ識別番号,ユーザ名,およびユーザが所有しているすべてのファイルの計算値の合計を,3 つの欄に表示し,ユーザ識別番号の前に 0 (ゼロ)を付けます。
acctdusg
コマンドは,空のディレクトリのディスク・ブロック数は表示しません。
10.6.4 acctdisk コマンド
acctdisk
コマンドは,バイナリ形式の総合課金ファイルを作成します。
acctdisk
コマンドが
dodisk
スクリプトから実行されると,diskusg
コマンドまたは
acctdusg
コマンドで作成された
/var/adm/dtmp
ファイルを読み取り,変換されたバイナリ・レコードを一時ファイルに書き込みます。
この一時ファイルは,その後,/var/adm/acct/nite/dacct
ファイルに改名されます。
通常,acctdisk
コマンドで作成されたディスク使用量課金レコードは他の課金レコードとマージされて,総合課金レポートが作成されます。
10.7 システム管理サービス課金機能
スーパユーザは,システム管理の各サービス料をユーザに請求することができます。 たとえば,次のサービスに対して課金することができます。
ディスクへのファイル・バックアップ
ディスクからのファイルの復元
テープへのファイル・バックアップ
テープからのファイルの復元
電話によるソフトウェア技術支援
係員によるソフトウェア技術支援
chargefee
シェル・スクリプトを使用すれば,ユーザへのサービスに対して課金することができます。
この場合,各サービスの課金額を決定する必要があります。
また,サービスの実行に要した時間に応じて異なる課金率を設定することができます。
課金単位は,fee
ファイルに収集されます。
各ユーザ名に対する課金単位数によって,システム管理作業の料金を決定します。
chargefee
シェル・スクリプトは,必要に応じて
fee
ファイルを作成し,ユーザ識別番号,ユーザ名,および課金単位で構成されるレコードを書き込みます。
chargefee
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/chargefee
user_name
units
units
変数にダッシュ (-) を指定することによって課金単位を減算することができます。
次の例では,7 課金単位を
josh
というユーザに請求しています。
# chargefee josh 7
上記のコマンドが発行されると,次のレコードが
/fee
ファイルに書き込まれます。
1114 josh 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0
課金機能が使用可能になっているプリンタを使用すると,プリンタ課金ファイルにレコードが書き込まれます。 プリンタ課金レコードは,固有の形式を持っており,次の情報が含まれています。
プリント要求を出したホストおよびユーザの名前
出力した用紙のページ数またはフィート数
プリンタを使用した回数
プリント出力の単位あたりの料金
プリンタ課金レコードによって,スーパユーザは,システム・プリント・リソースを使用したユーザに課金し,プリンタ使用状況を追跡することができます。
2 つのプリンタ課金ファイルが,ディレクトリ
/var/adm
または
/var/adm/printer
に置かれます。
プリンタ・ユーザ・ファイル
printer.acct
は,マシンおよびユーザごとに,使用したプリント用紙の量と費用をリストします。
プリンタ要約ファイル
printer.acct_sum
は,マシンおよびユーザごとに,使用された用紙についての要約をリストします。
printer
変数には,プリンタ名を指定します。
プリンタ課金ファイルの作成に関しては,第 8 章を参照してください。
プリンタ使用量に関するレポートの作成には
pac
コマンドを使用します。
ただし,pac
コマンドは,課金機能が使用可能になっているプリンタに関する情報のみを取得します。
pac
コマンドの構文は次のとおりです。
pac
[-cmrs
]
[-pprice
]
[-Pprinter
]
[user
...]
このコマンドのオプションの詳細は,
pac
(8)10.9 日次,要約,月次の各レポート・ファイルの作成
日次レポート・ファイル,要約レポート・ファイル,月次レポート・ファイルを
/var/adm/acct/nite
,/var/adm/acct/sum
,および
/var/adm/acct/fiscal
の各ディレクトリに作成するために使用できる 4 つのシェル・スクリプトおよび 1 つのコマンドがあります。
コマンド | 説明 |
runacct |
このシェル・スクリプトは,ディレクトリ
/var/adm/acct/nite
および
/var/adm/acct/sum
に,日次ファイルと要約ファイルを作成する。 |
acctmerg |
このコマンドは,総合課金レコード・ファイルをマージするコマンドで,これによってユーザは,ファイル,プロセス接続時間,料金,ディスク使用量,プリント・キュー課金レコードを統合して,指定したフォーマットでファイルを作成することができる。 出力は,省略時の設定であるバイナリ形式か,または ASCII 形式で行うことができ,最高 18 欄の課金情報を含めることができる。 |
prtacct |
このシェル・スクリプトは,/usr/include/sys/acct.h
ヘッダ・ファイル構造体を持つ課金ファイルをフォーマットして表示する。
個々のレコードには,ユーザ識別番号,接続時間,プロセス時間,ディスク使用量,およびプリンタ使用量に関する情報が含まれる。 |
prdaily |
このシェル・スクリプトは,前日からの課金データを内容とする ASCII 形式のファイルを作成する。
このスクリプトは,runacct
スクリプトから実行されると,/var/adm/acct/sum/rprtmmdd
ファイルを作成する。 |
monacct |
このシェル・スクリプトは,/var/adm/acct/fiscal
ディレクトリに累積プロセス課金ファイルおよび総合課金ファイルを作成する。 |
以降の各項で,それぞれのシェル・スクリプトおよびコマンドについて詳しく説明します。
10.9.1 runacct シェル・スクリプト
runacct
シェル・スクリプトは,課金シェル・スクリプトおよびコマンドを使用して,接続時間,料金,ディスク使用量,キュー,およびプロセス課金の各データベース・ファイルを処理し,ディレクトリ
/var/adm/acct/nite
および
/var/adm/acct/sum
に,日次ファイルと要約ファイルを作成します。
/var/adm/acct/nite
ディレクトリには,runacct
スクリプトによって毎日再使用されるファイルが含まれています。
これらのファイルのうちのいくつかには,バイナリ形式のファイルが
/var/adm/acct/sum
ディレクトリにあります。
このディレクトリには,累積要約ファイルもあります。
累積要約ファイルは,runacct
シェル・スクリプトによって作成および更新されるほか,月次レポートを作成するために
monacct
シェル・スクリプトによって使用されます。
cron
デーモンを設定して
runacct
シェル・スクリプトを毎日実行させることも,runacct
シェル・スクリプトを手動で実行することもできます。
runacct
シェル・スクリプトが完了しなかったり,このスクリプトで作成されたファイルが破壊されたり失われたりすると,このコマンドを手動で実行しなければならない場合があります。
runacct
シェル・スクリプトを実行すると一時ファイル
/var/adm/acct/nite/lock
が作成されます。
/var/adm/acct/nite/lock
ファイルが存在する場合,runacct
シェル・スクリプトは実行されません。
runacct
シェル・スクリプトは,次の表に示された順序で,13 の実行状態があり,どの状態でも再起動することができます。
状態 | 説明 |
SETUP |
課金ファイルのうちのいくつかを設定する。 |
WTMPFIX |
acctcon1
などのコマンドの異常終了の原因になる不正な日付およびタイム・スタンプ・エントリを修正する。 |
CONNECT1 |
接続セッション・レコードを記述する。 |
CONNECT2 |
接続セッション・レコードを使用して,バイナリ総合課金レコードを作成する。 バイナリ課金レコードは,他のレコードとマージされて,日次レポートになる。 |
PROCESS |
プロセス課金レポート・ファイルを作成する。 |
MERGE |
acctmerg
コマンドを使用して,バイナリ総合課金ファイルを作成する。 |
FEES |
acctmerg
コマンドを使用して,fee
ファイルのレコードをバイナリ総合課金ファイルにマージする。 |
DISK |
acctmerg
コマンドを使用して,ディスク使用量レコードをバイナリ総合課金ファイルにマージする。 |
QUEUEACCT |
acctmerg
コマンドを使用して,プリント・キュー課金レコードをバイナリ総合課金ファイルにマージする。 |
MERGEACCT |
バイナリ総合課金ファイルを,日次総合課金ファイルにコピーする。
この日次ファイルは,累積日次総合課金ファイルを作成するために,acctmerg
コマンドへの入力として使用される。 |
CMS |
コマンド使用量要約を作成する。 |
USEREXIT |
システム固有のシェル・スクリプトを実行する。 |
CLEANUP |
一時ファイルを削除する。 |
10.9.1.1 runacct シェル・スクリプト・エラーの修正
runacct
シェル・スクリプト・エラーが発生すると,メッセージがコンソール・デバイスに書き込まれ,ロック・ファイルが削除されて,診断ファイルとエラー・メッセージが保存された後,処理が停止します。
runacct
シェル・スクリプト・エラーが発生したかどうかは,次の情報から判定できます。
スクリプトが正常終了すると,/var/adm/acct/nite/active
ファイルが作成される。
runacct
シェル・スクリプトは,メッセージをこのファイルに記録します。
このファイルを使用してどのタスクが正常終了したかを判定することができます。
次に示すのは
active
ファイルの例です。
Fri Jul 5 11:02:56 EST 2002 -rw-r--r-- 1 adm adm 0 Jul 01 03:00 /var/adm/acct/nite/dacct -rw-rw-r-- 1 root system 924 Jun 05 10:45 /var/adm/wtmp -rw-rw-r-- 1 adm adm 0 Jun 08 13:46 fee -rw-rw-r-- 1 adm adm 0 Jun 07 02:00 pacct -rw-rw-r-- 1 adm adm 8904 Jun 02 11:02 pacct1 files setups complete wtmp processing complete connect acctg complete process acctg complete for /var/adm/Spacct1.1101 process acctg complete for /var/adm/Spacct2.1101 all process acctg complete for 1101 tacct merge to create daytacct complete no fees no disk records no queueing system records updated sum/tacct command summaries complete system accounting completed at Fri
スクリプトが正常終了しない場合,/var/adm/acct/nite/activemmdd
ファイルが作成される。
このファイルには,スクリプトの実行に関する情報が含まれており,これを使用してスクリプトの実行ができなかった箇所を調べることができます。
/var/adm/acct/nite/statefile
ファイルには,runacct
シェル・スクリプトが実行した最後の状態の名前が記述されている。
runacct
シェル・スクリプトはこの状態を正常に終了しなかった可能性があります。
/var/adm/acct/nite/lastdate
ファイルには,最後に
runacct
シェル・スクリプトが実行された日付が記述されている。
このファイルに指定されている日付が現在の日付である場合は,このシェル・スクリプトは実行されません。
runacct
シェル・スクリプトが中断または異常終了した場合は,前回正常終了したときの状態でスクリプトを再起動する必要があります。
/var/adm/acct/nite/statefile
ファイルには,最後に実行された状態の名前が記述されています。
runacct
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/runacct
[mmdd
]
[state
]
mmdd
変数には,runacct
シェル・スクリプトを実行する日付を指定します。
state
変数には,runacct
スクリプトの実行状態を指定します。
2 日以上連続して
runacct
シェル・スクリプトが実行できない場合は,SETUP
状態に設定し,スクリプトを手動で実行してください。
runacct
シェル・スクリプトを再起動する前に,/var/adm/acct/nite/lock
ファイルと
/var/adm/acct/nite/lastdate
ファイルを削除する必要があります。
次の例では,1 月 26 日からの課金データベース・ファイルを使用して,runacct
シェル・スクリプトが
MERGE
状態で実行されます。
# runacct 0126 MERGE > /var/adm/nite/fd2log&
次の例では,1 月 26 日からの課金データベース・ファイルを使用してシェル・スクリプト
nohup
コマンドを実行し,シグナル,ハングアップ,ログアウト,および取り消し終了が無視されるように指定します。
その実行中に生成されたエラー・メッセージは,fd2log
ファイルに書き込まれます。
# nohup runacct 0126 > /var/adm/acct/nite/fd2log&
以下に,エラーの例と,その問題を解決するための対策を示します。
ERROR: locks found.
run aborted
/var/adm/acct/nite/lock
ファイルが存在します。
このファイルを削除して,最後に終了したときの状態で
runacct
シェル・スクリプトを再起動してください。
ERROR: acctg already run for Fri : check Jan
現在の日付が,/var/adm/acct/nite/lastdate
ファイルに指定されている日付と同じになっています。
このファイルを削除し,最後に終了したときの状態で
runacct
シェル・スクリプトを再起動してください。
ERROR: runacct called with invalid arguments
runacct
シェル・スクリプトで,誤った引数を指定しています。
ERROR: turnacct switch returned rc=?
turnacct switch
シェル・スクリプトから
accton
コマンドを実行したときに異常終了しました。
accton
コマンドの保護を調べ,adm
ユーザがこのコマンドを実行できるように設定してください。
ERROR: Spacct?.mmdd already exists run setup manually
runacct
シェル・スクリプトを
MERGE
状態で手動で実行しなければなりません。
疑問符 (?) は,1 文字のワイルドカードを示します。
実際のファイル名には
var/adm/Spacct1.1101
のように,バージョン番号と日付が入っています。
ERROR: wtmpfix errors see nite/wtmperror
WTMPFIX
状態のときに,修復不能な
wtmp
ファイルが検出されました。
fwtmp
コマンドを使用してファイルを修正してください。
ERROR: invalid state, check /usr/var/adm/nite/active
処理中に,runacct
シェル・スクリプトが壊れた
active
ファイルを検出した可能性があります。
/var/adm/acct/nite/active*
ファイルおよび
statefile
ファイルを調べてください。
acctmerg
コマンドは,プロセス,接続時間,料金,ディスク使用量,およびキューの各総合課金レコードを
tacct
ファイル形式で統合します。
たとえば,特定のログイン名およびユーザ識別番号を持つ複数の総合課金レコードをマージして,そのログイン名とユーザ識別番号を持つ 1 つのレコード・グループを作成することができます。
ファイル・レコードは通常,ユーザ識別番号またはユーザ・ログイン名の順にマージされます。
省略時のコマンド出力はバイナリ形式ですが,ASCII 形式の出力も生成することができます。
省略時の
acctmerg
コマンド出力は,/usr/include/sys/acct.h
ヘッダ・ファイル構造体を持ち,最高 18 欄の情報を含みます。
倍精度の 2 つの要素の配列として指定されているデータ型を含む
/usr/include/sys/acct.h
ヘッダ・ファイル構造体を持つレコードは,就業時間の値と非就業時間の値の両方を含むことができます。
acctmerg
コマンドは,runacct
シェル・スクリプトによって実行されます。
また,このコマンドを手動で実行してレポートを作成することもできます。
acctmerg
コマンドの構文は次のとおりです。
/usr/sbin/acct/acctmerg
[-ahiptuv
]
[#
]
[ file
...]
最高 9 つの総合課金レコード・ファイルを指定することができます。 ファイルを指定しない場合は,レコードは標準入力から読み取られます。
このコマンドのオプションの詳細は,
acctmerg
(8)
次の例は,ASCII 形式のディスク課金ファイル
/var/adm/acct/nite/dacct
から,UID,LOGNAME,DSK_BLOCKS,および DSAMPS の欄エントリを読み取って,総合課金ファイル
/var/adm/acct/sum/tacct
のバイナリ・レコードにマージします。
# acctmerg -i1-2, 13, 18 < nite/dacct | sum/tacct
acctmerg
コマンドを使用して,/var/adm/sum/tacct
ファイルのエラーを修正することができます。
このファイルで発生する可能性のあるエラーは,負数と,ユーザ識別番号の重複です。
現在の
/var/adm/sum/tacct
ファイルのエラーを修正するには,次の手順に従ってください。
作業ディレクトリを
/var/adm/sum
に変更します。
prtacct
コマンドを使用して,/var/adm/sum/tacctprev
ファイルを表示します。
/var/adm/sum/tacctprev
ファイルの内容が正しい場合は,/var/adm/sum/tacctmmdd
ファイルに問題がある可能性があります。
この例では,/var/adm/sum/tacctmmdd
ファイルを修正することで問題が解決することを想定しています。
次のコマンドを使用して,/var/adm/sum/tacctmmdd
ファイルの ASCII バージョンを取得します。
# acctmerg -v < tacct.0617 > tacct_temp
一時ファイルを編集し,必要に応じてレコードを修正します。
次のコマンドを使用して,/var/adm/sum/tacctmmdd
ファイルを作成し直します。
# acctmerg -i < tacct_temp > tacct.0617
次のコマンドを使用して,/var/adm/sum/tacct
ファイルを作成し直します。
# acctmerg tacctprev < tacct.0617 > tacct
prtacct
シェル・スクリプトは,tacct
ファイル形式のバイナリ総合課金ファイルを ASCII 形式で表示します。
このスクリプトを使用すれば,接続時間,プロセス時間,ディスク使用量,またはプリンタ使用量のレポート・ファイルを作成することができます。
prtacct
シェル・スクリプトは,monacct
シェル・スクリプトおよび
prdaily
シェル・スクリプトによって実行されます。
prdaily
シェル・スクリプトは,CLEANUP 状態の
runacct
シェル・スクリプトによって実行されます。
prtacct
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/prtacct
[-f column
]
[-v
]
file
このコマンドのオプションの詳細は,
prtacct
(8)10.9.4 prdaily シェル・スクリプト
prdaily
シェル・スクリプトは,前日からの課金データのレポートを ASCII 形式で作成します。
prdaily
シェル・スクリプトは,CLEANUP 状態の
runacct
シェル・スクリプトによって実行され,/var/adm/acct/sum/rprtmmdd
ファイルを作成します。
手動でこのコマンドを実行して,レポートを作成することもできます。
prdaily
スクリプトは,次の 6 つの課金ファイルの情報を統合します。
/var/adm/acct/nite/reboots
/var/adm/acct/nite/lineuse
/var/adm/acct/sum/tacctmmdd
/var/adm/acct/nite/daycms
/var/adm/acct/nite/cms
/var/adm/acct/sum/loginlog
prdaily
シェル・スクリプトの構文は次のとおりです。
prdaily
[-l
[ mmdd
]]
| [-c
]
このコマンドのオプションに関する詳細は,
prdaily
(8)10.9.5 monacct シェル・スクリプト
monacct
シェル・スクリプトは,バイナリ課金ファイルを使用して,累積要約ファイルを
/var/adm/acct/fiscal
ディレクトリに作成します。
要約ファイルが作成された後,このコマンドによって古い課金ファイルが
/var/adm/acct/sum
ディレクトリから削除され,新しいファイルが作成されます。
通常,monacct
スクリプトは,毎月 1 回実行されて,月次レポート・ファイルを作成します。
cron
デーモンを設定して,シェル・スクリプトを自動的に実行することもできます。
詳細は,10.2.4 項を参照してください。
monacct
シェル・スクリプトの構文は次のとおりです。
/usr/sbin/acct/monacct
[number
]
number
変数には,1 〜 12 の範囲の整数を指定し,要約レポートを作成したい月を指定します。
省略時の値は現在の月です。
monacct
シェル・スクリプトは,次のファイルを
/var/adm/acct/fiscal
ディレクトリに作成します。
tacctmm
mm
変数で指定されている月の前月のバイナリ総合課金ファイルを指定します。
cmsmm
mm
変数で指定されている月の前月のバイナリ累積コマンド一覧ファイルを指定します。
fiscrptmm
ASCII 形式の総合月次課金レポート・ファイルを指定します。
このファイルは,レポート・ファイル
/var/adm/acct/sum/rprtmmdd
と同じ形式で,次のファイルから作成されます。
/var/adm/acct/fiscal/tacctmm
/var/adm/acct/fiscal/cmsmm
/var/adm/acct/sum/loginlog