acct 文件格式

用途

提供每个进程的记帐文件格式。

描述

这些记帐文件提供一种方法来监视系统的使用。 这些文件还用作对处理器使用情况,材料和服务的每个进程进行计费的方法。 阿克特 系统调用会生成记帐文件。 /usr/include/sys/acct.h 文件定义这些文件中的记录,这些记录是在进程退出时写入的。

Acct 结构

acct.h 头文件中的 acct 结构包含以下字段:

描述
ac_flag 指定为其写入记帐记录的进程的下列其中一个记帐标志:
AFORK 该进程是使用 命令创建的,但尚未跟随 执行 子例程。 执行 子例程关闭了 AFORK 标志。
ASU 进程使用 root 用户权限。
ac_stat 指定退出状态。 用于指示进程终止方式的标志。
ac_uid 指定要为其写入记帐记录的进程的用户标识。
ac_gid 指定要为其写入记帐记录的进程的组标识。
ac_tty 指定从其启动该进程的终端。
ac_wlmkey 保留一个 64 位数字键,表示进程所属的工作负载管理器类。 工作负载管理器应用程序编程接口提供了 wlm_key2class 子例程以将密钥转换回类名。
ac_btime 指定开始时间。 启动进程的时间。
ac_utime 指定进程使用的用户时间量 (以秒为单位)。
ac_stime 指定进程使用的系统时间量 (以秒为单位)。
ac_etime 指定自命令运行以来经过的时间量 (以秒计)。
ac_mem 指定进程所使用的内存的平均量。 每次时钟中断 (或每秒时钟 tick,100 次) 时,都会调用 sys_timer 例程以更新当前进程的用户数据。 如果进程处于用户方式,那么它的 u_utime 值和内存使用情况值都会递增; 否则,只有它的 u_stime 值会递增。 sys_timer 例程调用 vms_rusage 例程以获取 TEXTSEG (#1) , PRIVSEG (#2) 和大数据段 (#3-11) (如果已使用) 正在使用的实内存千字节数。 这些值将添加到每个时钟信号的总内存使用率值中,在此期间进程未处于内核方式。 当进程结束时, 阿克特文特 例程计算进程执行时 (在用户方式和内核方式下) 发生的时钟信号数,并将总内存使用率值除以此数字,以获得进程的平均内存使用率。 此值记录为一个双字节无符号的短整数。
ac_io 指定由进程传送的字符数。
ac_rw 指定该进程读取或写入的块数。
ac_comm 指定已启动该进程的命令的名称。 由 子例程创建的子进程从父进程接收此信息。 执行 子例程重置此字段。

tacct 结构

tacct 结构 (不属于 acct.h 头文件) 表示各种记帐命令使用的总记帐格式:

struct tacct {
       uid_t ta_uid;          /* user-ID */
       char ta_name[8];       /* login name */
       float ta_cpu[2];       /* cum. CPU time, p/np (mins) */
       float ta_kcore[2];     /* cum. kcore-mins, p/np */
       float ta_io[2];        /* cum. chars xferred (512s) */
       float ta_rw[2];        /* cum. blocks read/written */
       float ta_con[2];       /* cum. connect time, p/np, mins */
       float ta_du;           /* cum. disk usage */
       long ta_qsys;          /* queuing sys charges (pgs) */
       float ta_fee;          /* fee for special services */
       long ta_pc;            /* count of processes */
       unsigned short ta_sc;  /* count of login sessions */
       unsigned short ta_dc;  /* count of disk samples */
};