ACCT(2)

名称
acct - プロセスアカウンティングを有効または無効にする

ライブラリ
libc

書式
<unistd.h> int acct(const char *file)

解説
acct() システムコールは、システムアカウンティングレコードの収集を有効または 無効にします。引数 file が NULL ポインタである場合、アカウンティングは無効にされます。 file が 既存 のパス名 (ヌル文字で終わる) の場合、レコード収集が有効になり、 開始されて通常の状態で終了した各プロセスについてのアカウンティングレコードが file に追加されます。 異常な終了状態とは、再起動またはその他の致命的なシステムの問題です。 決して終了しないプロセス用のレコードは acct() によっては作成できません。

acct() が使用するレコード構造体の詳細については、 <sys/acct.h> および acct(5) を参照してください。

この呼び出しはスーパユーザにだけ許可されてます。

注
アカウンティングファイルが存在しているファイルシステムの空き容量が 少なくなると、アカウンティングは自動的に無効になります。 空き容量が増えて再び利用できるようになると有効になります。 この振舞いを制御する値は、以下の sysctl(8) 変数を使用して変更することが可能です:

kern.acct_chkfreq
    空きディスク領域がチェックされるべき頻度を (秒単位で) 指定します。

kern.acct_resume
    プロセスアカウンティングを再開する、空きディスク領域のパーセンテージです。

kern.acct_suspend
    プロセスアカウンティングを中断する、空きディスク領域のパーセンテージです。

戻り値
エラーの場合は -1 が返されます。 ファイルは存在している必要があり、呼び出しはスーパユーザだけができます。

エラー
acct() システムコールは次の場合に処理を失敗します:

[EPERM]
    スーパユーザ以外のユーザによって呼び出されました。

[ENOTDIR]
    パスの構成要素中にディレクトリ以外のものが含まれています。

[ENAMETOOLONG]
    パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。

[ENOENT]
    指定されたファイルが存在しません。

[EACCES]
    パスの先頭構成要素について検索パーミッションが拒否されているか、 またはパス名が通常のファイルではありません。

[ELOOP]
    パス名を変換するときに検出されたシンボリックリンクが多すぎます。

[EROFS]
    指定されたファイルは読取り専用ファイルシステム上にあります。

[EFAULT]
    file 引数が、プロセスに割り当てられたアドレス空間の範囲外を指しています。

[EIO]
    ファイルシステムに読み書きしている間に入出力エラーが発生しました。

関連項目
acct(5), accton(8), sa(8)

歴史
acct() 関数は AT&T UNIX で登場しました。