欢迎加入IT云增值在线QQ交流群:342584734
分类:
2007-01-05 17:43:43
运行每日记帐。
/usr/sbin/acct/runacct [ mmdd [ State ] ]
runacct 命令是主要的每日记帐 shell 过程。一般由 cron 守护程序启动, runacct 命令处理连接、费用、磁盘、队列系统(打印机)和为当天处理数据文件来产生二进制格式的每日报表,/var/adm/acct/nite/dayacct 。runacct 命令也为 prdaily 过程或记帐目的准备了摘要文件以贮备 ASCII 格式的每日报告, /var/adm/acct/sum/rprtmmdd 。
acctmerg 命令将 dayacct 报告添加到记帐周期的累计摘要报告, /var/adm/acct/sum/tacct。tacct 报告被 monacct 命令使用以产生一个月度报告, /var/adm/acct/fiscal。
如果您需要重启 runacct 过程,该命令中有两个参数必须从键盘输入。日期参数 mmdd 使您能够为您想重新运行的记帐指定日期和月份。 State 参数使一个有管理权限的用户在它的任何状态下重新启动 runacct。
如果发生运行时错误,runacct 命令保护活动记帐文件和摘要文件,而且它通过将描述消息写入 /var/adm/acct/nite/active 文件记录它的进度。当 runacct 过程遇到一个错误时,它给 root 用户和管理员发送电子邮件,并退出。
runacct 过程也在 /var/adm/acct/nite 目录中创建了两个临时文件 lock 和 lock1,过程使用它们来防止两个同时发生的 runacct 过程的调用。如果使用 lastdate 文件(在相同的目录中)来防止每天超过一个请求。
runacct 命令将其处理拆分为独立的、可重新启动的不同状态。在完成每一个状态时,它在 /var/adm/acct/nite/state 文件中写入了下一个状态的名称。runacct 过程以如下的顺序处理各种状态:
状态 | 操作 |
---|---|
SETUP | 将活动的记帐文件移入工作文件并重新启动活动文件。 |
WTMPFIX | 验证 wtmp 文件的完整性,如果需要,更正日期变动。 |
CONNECT1 | 调用 acctcon1 命令以产生连接会话记录。 |
CONNECT2 | 将会话记录转换成总的记帐记录(tacct.h 格式)。 |
PROCESS | 将进程记帐记录转换成总的记帐记录(tacct.h 格式)。 |
MERGE | 合并连接并处理总记帐记录。 |
FEES | 将 chargefee 命令的输出转换成总的记帐记录(tacct.h 格式)并使用连接和进程的总的记帐记录将它们合并。 |
DISK | 用连结、处理和费用的总的记帐记录合并磁盘记帐记录。 |
QUEUEACCT | 排列队列(打印机)记帐记录,将它们转换成总的记帐记录(tacct.h 格式)并用其它的总记帐记录合并它们。 |
MERGETACCT | 用在 /var/adm/acct/sum/tacct 报告文件中的摘要的总的记帐记录合并在 daytacct 报告文件中的每天的总的记帐记录。 |
CMS | 在文件 /var/adm/acct/sum/cms 中生成命令总结。 |
USEREXIT | 如果 /var/adm/siteacct shell 文件存在的话,在这点调用它进行基于站点的处理。 |
CLEANUP | 删除临时文件并退出。 |
要在失败后重新启动 runacct 命令,首先为诊断消息检查 /var/adm/acct/nite/active 文件,然后修正任何被破坏了的数据文件,如 pacct 或者 wtmp。在重新启动 runacct 命令之前,除去 lock 文件和 lastdate 文件(它们都在 /var/adm/acct/nite 目录中)。如果您重新启动 runacct 命令,必须指定 mmdd 参数。它为 runacct 命令重新运行记帐指定月份和日期。 runacct 过程通过读取 /var/adm/acct/nite/statefile 文件为处理确定了入口点。为了覆盖这个缺省的操作,在 runacct 命令行上指定希望的 state 。
在 SETUP 状态下重启动 runacct 命令通常不是一个好主意。 替代的方法为,手动执行设置操作并在 WTMPFIX 状态下重新启动记帐,如下:
/usr/lib/acct/runacct mmdd WTMPFIX
如果 runacct 命令在 PROCESS 状态下失败,除去最后的 ptacct 文件,因为它会不完整。
访问控制:这个命令应该仅将执行(x)的访问权授予 adm 组的成员。
0 4 * * 1-6 /usr/sbin/acct/runacct 2> \ /var/adm/acct/nite/accterr
这个示例显示了 cron 守护程序会读取和执行的指示信息。runacct 命令会在早上 4 点运行。(04) 每个星期一到星期六(1-6)并将所有的标准错误输出(2>)写到 /var/adm/acct/nite/accterr 文件。这个命令仅仅是通常提供给 cron 守护程序的记帐指示信息之一。
nohup /usr/sbin/acct/runacct 2> \ /var/adm/acct/nite/accterr &
尽管最好用 cron 守护程序自动启动 runacct 过程(参见例 1),您也可以从键盘输入命令。 runacct 命令将会在后台运行(&),忽略所有的 INTERRUPT 和 QUIT 信号(nohup 命令),并将所有的标准错误输出(2>)写到 /var/adm/acct/nite/accterr 文件。
nohup /usr/sbin/acct/runacct 0601 2>> \ /var/adm/acct/nite/accterr &
这个命令在六月一日(0601)重新启动 runacct。 runacct 命令读取文件 /var/adm/acct/nite/statefile 以查找开始状态。runacct 命令将在(& )后台运行,它忽略了所有的 INTERRUPT 和 QUIT 信号(nohup)。标准错误输出 (2)被添加到了 /var/adm/acct/nite/accterr 文件的尾部( >>)。
nohup /usr/sbin/acct/runacct 0601 MERGE 2>> \ /var/adm/acct/nite/accterr &
这个示例在六月一日(0601)重新启动 runacct 命令,以 MERGE 状态开始。runacct 命令将在(&)后台运行,忽略所有的 INTERRUPT 和 QUIT 信号(nohup 命令)。标准错误输出(2)被添加到了 /var/adm/acct/nite/accterr 文件的尾部(>>)。
/var/adm/wtmp | 登录/登出历史文件。 |
/var/adm/pacct* | 处理记帐文件。 |
/var/adm/acct/nite/daytacct | 磁盘磁盘使用情况记帐程序。 |
/var/adm/qacct | 活动的队列记帐文件。 |
/var/adm/fee | 要用户付的费用的记录。 |
/var/adm/acct/sum/* | 命令和总的记帐摘要文件。 |
/var/adm/acct/nite/ptacct*.mmdd | pacct 文件的连结版本。 |
/var/adm/acct/nite/active | runacct 消息文件。 |
/var/adm/acct/nite/lock* | 防止 runacct 同时被调用。 |
/var/adm/acct/nite/lastdate | 包含 runacct 运行的最后日期。 |
/var/adm/acct/nite/statefile | 包含要处理的当前状态。 |
命令、 命令、 或者 acctcon2 命令、 命令、 、 acctprc2 或者 accton 命令、 命令和 命令。
守护程序。
子例程。
文件格式和 文件格式。