系统管理指南:高级管理

每日记帐的工作原理

以下是每日记帐的工作原理的分步概要说明:

  1. 将系统切换到多用户模式时,执行 /usr/lib/acct/startup 程序。startup 程序会执行多个调用每日记帐的其他程序。

  2. acctwtmp 程序向 /var/adm/wtmpx 文件中添加一条“引导”记录。在此记录中,系统名显示为 wtmpx 记录中的用户名。下表汇总了原始记帐数据的收集方式及存储位置。

    /var/adm 中的文件

    存储的信息 

    写入程序 

    格式 

    wtmpx

    连接会话  

    logininit

    二进制 

     

    更改

    date

    二进制 

     

    重新引导

    acctwtmp

    二进制 

     

    关闭

    shutacct

    二进制 

    pacctn

    进程 

    Kernel(当进程结束时)  

    二进制 

     

     

    turnacct switch(当原有文件达到 500 块时创建一个新文件)

    二进制 

    fee

    特殊费用 

    chargefee

    ASCII 

    acct/nite/disktacct

    使用的磁盘空间 

    dodisk

    二进制 

  3. 使用 -on 选项调用的 turnacct 脚本开始进程记帐。具体来讲,就是 turnacct 脚本使用 /var/adm/pacct 参数执行 accton 程序。

  4. 删除 Shell 脚本会“清除”由 runacct 脚本留在 sum 目录中的已保存的 pacctwtmpx 文件。

  5. logininit 程序通过向 /var/adm/wtmpx 文件中写入记录来记录连接会话。日期更改(使用带参数的日期)也会写入 /var/adm/wtmpx 文件中。使用 acctwtmp 命令进行重新引导和关闭也会记录到 /var/adm/wtmpx 文件中。

  6. 进程结束时,内核会使用 acct.h 格式在 /var/adm/pacct 文件中为每个进程写入一条记录。

    cron 命令每小时执行一次 ckpacct 脚本,以检查 /var/adm/pacct 文件的大小。如果文件大小超出了 500 块(缺省值),则会执行 turnacct switch 命令。(程序将 pacct 文件移至 pacctn 文件并创建一个新文件。)如果由于处理这些记录时出现故障而尝试重新启动 runacct 脚本,则有多个小型 pacct 文件的优点是显而易见的。

  7. cron 命令每晚都会执行 runacct 脚本。runacct 脚本会对记帐文件进行处理,从而按用户名生成命令概要和使用情况概要。将处理以下记帐文件: /var/adm/pacctn/var/adm/wtmpx/var/adm/fee/var/adm/acct/nite/disktacct

  8. runacct 脚本每天执行一次 /usr/lib/acct/prdaily 脚本,以便将每日记帐信息写入 /var/adm/acct/sum/rprtMMDD 文件中。

  9. monacct 脚本应每月执行一次(或以您确定的时间间隔执行,例如在每个财务周期结束时执行)。monacct 脚本会基于 sum 目录中存储的数据创建一个报告,该目录每天通过 runacct 脚本更新一次。创建报告后,monacct 脚本将“清除”sum 目录,以便为新的 runacct 数据准备目录文件。