8.13 进程会计——许多 UNIX 系统提供了一个选项来进行进程会计事务处理。当选择此选项后,每当进程结束时,内核就会写入一个会计记录。这种典型的会计记录是32字节长的二进制数据,包括命令名、所使用的 CPU 时间总量、用户 ID 和组 ID、起动时间等详细信息。这一节将详细说明这种会计记录,从而使我们再次深入了解进程,同时也得以使用 5.9 节中介绍的 fread 函数。

有趣的是,没有任何标准对进程会计进行过说明。本节内容基于 SVR 4 和 4.3 + BSD 的实现。SVR 4 提供了很多程序来处理这种原始的会计数据——例如 runacct 和 acctcom。而 4.3 + BSD 则提供 sa (8) 命令 来处理并总结原始会计数据。

一个至今没有详细说明过的函数 (acct) 用于启动和终止进程会计。唯一使用该函数的是 SVR 4 和 4.3 + BSD 的 accton (8) 命令。当超级用户执行带路径名参数的 accton 命令时,会计处理便开始。该路径名通常是 /var/adm/pacct(早期系统中为 /usr/adm/acct)。执行不带任何参数的 accton 命令则会停止会计处理。会计记录的结构定义在头文件 中,其样式如下:

你是否想过,这些复杂的会计记录背后究竟藏着什么样的奥秘?进程会计就像一本详尽的日志,记录了系统中每一个进程的点滴。试想,一个复杂的系统运行了一天,若没有这些记录,那岂不是一片混乱?这个记录不仅仅是为了管理和追踪,更是一种透明的机制,让我们能够从一个微观的角度重新审视系统的运行轨迹。

为了更好地理解这一切,不妨看看这些详尽的会计数据吧!