系统管理指南:高级管理

runacct 脚本

主要的每日记帐脚本 runacct 通常由 cron 命令在正常工作时间之外调用。runacct 脚本可以处理连接、费用、磁盘和进程记帐文件。此脚本还可准备每日摘要文件和累积摘要文件,以供 prdailymonacct 脚本记帐。

runacct 脚本可在发生错误时防止文件受到损坏。

使用一系列保护机制来执行以下任务:

该脚本通过向 active 文件中写入描述性消息来记录其进度。除非另有说明,否则假定 runacct 脚本所使用的文件位于 /var/adm/acct/nite 目录中。runacct 脚本执行期间的所有诊断输出都写入 fd2log 文件中。

调用 runacct 脚本时,将会创建 locklock1 文件。这些文件可防止同时执行 runacct 脚本。如果调用 runacct 程序时已经存在上述文件,则该程序将列显错误消息。lastdate 文件中包含上次调用 runacct 脚本的月份和日期,以避免每天多次执行脚本。

如果 runacct 脚本检测到错误,则会发生以下情况:

有关如何重新启动 runacct 脚本的说明,请参见如何重新启动 runacct 脚本

要允许重新启动 runacct 脚本,需要将处理细分为不同的可重复执行状态。statefile 文件用于跟踪完成的上一个状态。当每个状态完成时,都会更新 statefile 文件,以反映下一个状态。该状态的处理完成后,将读取 statefile 文件并处理下一个状态。当 runacct 脚本达到 CLEANUP 状态时,它将删除锁定并结束。将按下表所示来执行状态。

表 10–1 runacct 脚本的状态

状态 

说明 

SETUP

执行 turnacct switch 命令以创建新的 pacct 文件。/var/adm/pacct n 进程记帐文件(pacct 文件除外)被移至 /var/adm/Spacct n.MMDD 文件。/var/adm/wtmpx 文件被移至 /var/adm/acct/nite/wtmp.MMDD 文件(在结尾添加了当前时间记录)并创建一个新 /var/adm/wtmp 文件。closewtmputmp2wtmp 程序将向 wtmp.MMDD 文件和新的 wtmpx 文件中添加记录,以便 对当前登录的用户进行说明。

WTMPFIX

wtmpfix 程序检查 nite 目录中的 wtmp.MMDD 文件是否正确。由于某些日期更改会导致 acctcon 程序失败,所以 wtmpfix 程序会在有日期更改记录时尝试调整 wtmpx 文件中的时间标记。此程序还可删除 wtmpx 文件中的任何已损坏项。将 wtmp.MMDD 文件的已修复版本写入 tmpwtmp 文件。

CONNECT

acctcon 程序用于在文件 ctacct.MMDD 中记录连接记帐记录。这些记录使用 tacct.h 格式。此外,acctcon 程序还创建 lineusereboots 文件。reboots 文件会记录在 wtmpx 文件中找到的所有引导记录。

PROCESS

acctprc 程序用于将 /var/adm/Spacctn.MMDD 进程记帐文件转换为 ptacctn.MMDD 文件中的完整记帐记录。Spacctptacct 文件通过数字进行关联,这样在 runacct 脚本失败时,将不处理 Spacct 文件。

MERGE

acctmerg 程序将进程记帐记录与连接记帐记录合并,以形成 daytacct 文件。

FEES

acctmerg 程序将 fee 文件中的 ASCII tacct 记录合并到 daytacct 文件中。

DISK

dodisk 脚本可生成 disktacct 文件。如果 dodisk 脚本已运行并生成 disktacct 文件,则 DISK 程序会将该文件合并到 daytacct 文件中,并将 disktacct 文件移至 /tmp/disktacct.MMDD 文件。

MERGETACCT

acctmerg 程序将 daytacct 文件与 sum/tacct 文件(累计总记帐文件)合并。每天都将 daytacct 文件保存到 sum/tacct.MMDD 文件中,这样便可在 sum/tacct 文件损坏或丢失时重新创建该文件。

CMS

acctcms 程序多次运行。第一次运行该程序是为了使用 Spacct n 文件生成命令摘要,并向 sum/daycms 文件写入数据。第二次运行 acctcms 程序是为了将 sum/daycms 文件与 sum/cms 累积命令摘要文件合并。最后,再运行 acctcms 程序,以生成 nite/daycmsnite/cms,即分别来自 sum/daycmssum/cms 的 ASCII 文件。lastlogin 程序用于创建 /var/adm/acct/sum/loginlog 日志文件。此文件将报告每个用户的上次登录时间。如果 runacct 脚本在午夜后运行,则显示某些用户上次登录时间的日期会与正确日期相差一天。

USEREXIT

任何与安装相关(本地)的记帐程序都可在此点运行。runacct 脚本预计此程序为 /usr/lib/acct/runacct.local 程序。

CLEANUP

此状态可清除临时文件、运行 prdaily 脚本、将其输出保存至 sum/rpt.MMDD 文件、删除锁定,然后退出。


注意 – 注意 –

如果以 CLEANUP 状态重新启动 runacct 脚本,请删除最后一个 ptacct 文件,因为该文件将不完整。