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 */
};