ACCT(5)

名称
acct - 実行アカウントファイル

書式
<sys/types.h> <sys/acct.h>

解説
カーネルは、下記の acct 情報構造を、全プロセスに対して管理します。 プロセスが終了すると、アカウンティングが有効になっている場合には、 カーネルは acct(2) 関数呼び出しを行い、アカウンティングファイルに記録を追加します。

    /*
     * アカウンティング構造体; これらは、基底値 8 の 3 ビット指数部および
     * 13 ビット小数部の ``浮動小数点数'' である comp_t 型を使用します。
     * 単位は 1/AHZ 秒です。
     */
    typedef u_short comp_t;
    #define AC_COMM_LEN 16
    struct acct {
    	char	ac_comm[AC_COMM_LEN];  /* コマンド名 */
    	comp_t	ac_utime;	/* ユーザ時間 */
    	comp_t	ac_stime;	/* システム時間 */
    	comp_t	ac_etime;	/* 経過時間 */
    	time_t	ac_btime;	/* 開始時刻 */
    	uid_t	ac_uid;		/* ユーザ ID */
    	gid_t	ac_gid;		/* グループ ID */
    	short	ac_mem;		/* 平均メモリ使用量 */
    	comp_t	ac_io;		/* 入出力ブロック数 */
    	dev_t	ac_tty;		/* 制御 tty */
    #define	AFORK	0x01		/* fork したが exec されていない */
    #define	ASU	0x02		/* スーパユーザ権限を使用した */
    #define	ACOMPAT	0x04		/* 互換モードを使用した */
    #define	ACORE	0x08		/* コアダンプした */
    #define	AXSIG	0x10		/* シグナルにより kill された */
    	char	ac_flag;	/* アカウンティングフラグ */
    };
    /*
     * 1/AHZ の粒度で、データは comp_t フィールドにエンコードされます。
     * 必ずしも周波数と同一となるとは限りません。
     */
    #define	AHZ	64

終了したプロセスが execve(2) により生成されたものだった場合、 実行されたファイルのファイル名 (最大 10 文字まで) が ac_comm フィールドに保存され、その状態は ac_flag の次のフラグの 1 つ以上を設定することにより保存されます: AFORK, ACOMPAT, ACORE, ASIG 。 ASU はもはやサポートされていません。

関連項目
acct(2), execve(2), sa(8)

歴史
acct ファイルフォーマットは AT&T UNIX から登場しました。