runacct 命令

用途

运行每日记帐。

语法

/usr/sbin/acct/runacct [ mmdd [ 状态 ]]

描述

runacct 命令是主要的每日记帐 shell 过程。 runacct 命令一般由 cron 守护程序启动,该命令处理当天的连接、费用、磁盘、队列系统(打印机)以及进程记帐数据文件来产生二进制格式的每日报告 /var/adm/acct/nite(x)/dayacctrunacct 命令也为 prdaily 过程准备了摘要文件以准备 ASCII 格式的每日报告 /var/adm/acct/sum(x)/rprtmmdd,或用于记帐。

acctmerg 命令将 dayacct 报告添加到记帐周期的累计摘要报告 /var/adm/acct/sum(x)/taccttacct 报告被 monacct 命令使用以 产生一个月度报告 /var/adm/acct/fiscal(x)

如果您需要重新启动 runacct 过程,该命令中有两个参数必须从键盘输入。 日期参数 mmdd 使您能够为您想重新运行的记帐指定日期和月份。 State 参数使一个有管理权限的用户在它的任何状态下重新启动 runacct。 有关重新启动 runacct 过程和错误恢复的更多信息。

如果发生运行时错误,runacct 命令保护活动记帐文件和摘要文件,而且它通过将描述消息写入 /var/adm/acct/nite(x)/active 文件记录它的进度。 当 runacct 过程遇到一个错误时,它给 root 用户和管理员发送电子邮件,并退出。

runacct 过程也在 /var/adm/acct/nite(x) 目录中创建了两个临时文件 locklock1,过程使用它们来防止同时发生两个对 runacct 过程的调用。 它使用 lastdate 文件(在相同的目录中)来防止每天超过一个调用。

runacct 命令将其处理拆分为独立的、可重新启动的不同状态。 在完成每一个状态时,它在 /var/adm/acct/nite(x)/state 文件中写入了下一个状态的名称。 runacct 过程以如下的顺序处理各种状态:

状态 操作
SETUP 将活动的记帐文件移入工作文件并重新启动活动文件。
WTMPFIX 验证 wtmp 文件的完整性,如果需要,更正日期变动。
CONNECT1 调用 acctcon1 命令以产生连接会话记录。
CONNECT2 将会话记录转换成总的记帐记录(tacct.h 格式)。
PROCESS 将进程记帐记录转换成总的记帐记录(tacct.h 格式)。
MERGE 合并连接并处理总记帐记录。
FEES chargefee 命令的输出 转换成总的记帐记录(tacct.h 格式)并使用连接和进程的总的记帐记录将它们合并。
磁盘 用连结、处理和费用的总的记帐记录合并磁盘记帐记录。
队列 (QUEUEACCT) 排列队列(打印机)记帐记录,将它们转换成总的记帐记录(tacct.h 格式)并用其他的总记帐记录合并它们。
MERGETACCT daytacct 报告文件中的每天总记帐记录与 /var/adm/acct/sum(x)/tacct 报告文件中的摘要总记帐记录合并。
CMS 在文件 /var/adm/acct/sum(x)/cms 中生成命令摘要。
用户 (USEREXIT) 如果 /var/adm/siteacct shell 文件存在的话,在这点调用它进行基于站点的处理。
清理 删除临时文件并退出。
重新启动 runacct 过程

要在失败后重新启动 runacct 命令,首先检查 /var/adm/acct/nite(x)/active 文件以获取诊断消息,然后修正任何被破坏了的数据文件,如 pacctwtmp。 在重新启动 runacct 命令之前,除去 lock 文件和 lastdate 文件(它们都在 /var/adm/acct/nite(x) 目录中)。 如果您要重新启动 鲁纳克特 命令,那么必须指定 姆德 参数。 它为 runacct 命令重新运行记帐指定月份和日期。 runacct 过程通过读取 /var/adm/acct/nite(x)/statefile 文件为处理确定了入口点。 要覆盖此缺省操作,请在 鲁纳克特 命令行上指定所需的 状态

通常,在 SETUP 状态中重新启动 鲁纳克特 命令是不太好的。 替代的方法为,手动执行设置操作并在 WTMPFIX 状态下重新启动记帐,如下所示:

/usr/lib/acct/runacct mmdd WTMPFIX

如果 runacct 命令在 PROCESS 状态下失败,那么请除去最后的 ptacct 文件,因为它并不完整。

标志

描述
-X 处理每个用户名的所有可用字符,而不是截断为前 8 个字符。 -X 标志还会使 runacct 命令及其调用的所有命令使用 /var/adm/acct/sumx/var/adm/acct/nitex 目录,而不是 /var/adm/acct/sum /var/adm/acct/nite 目录。

安全性

访问控制:此命令应该仅将执行 (x) 访问权授予 adm 组的成员。

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

  1. 要对系统资源启动每日记帐过程,请将以下命令行添加到 Crontab 文件,以便 鲁纳克特 命令将由 Cron 守护程序自动运行:
    0 4 * * 1-6 /usr/sbin/acct/runacct 2> \
    /var/adm/acct/nite/accterr 
    要使用长用户名支持来启动每日记帐过程,请将以下行添加到 crontab 文件:
    0 4 * * 1-6 /usr/sbin/acct/runacct -X 2> \
    /var/adm/acct/nitex/accterr 
    这个示例显示了 cron 守护程序会读取和执行的指示信息。 runacct 命令将在 4 a.m运行。04) 每个星期一至星期六 (1-6) 并写入所有标准错误输出 (2>) 到 /var/adm/acct/nite(x)/accterr 文件。 此命令仅仅是通常提供给 cron 守护程序的记帐指示信息之一。
  2. 要从命令行 (启动 鲁纳克特 命令) 启动系统资源的日常记帐过程,请输入以下命令:
    nohup /usr/sbin/acct/runacct 2> \
    /var/adm/acct/nite/accterr &
    尽管最好用 cron 守护程序自动启动 runacct 过程(参见例 1),您也可以从键盘输入命令。 鲁纳克特 命令将在后台运行。&) ,忽略所有 INTERRUPT 和 QUIT 信号 ( 诺胡特 命令) ,并写入所有标准错误输出 (2>) 到 /var/adm/acct/nite/accterr 文件。
  3. 要重新启动特定日期的系统记帐过程,请输入类似以下内容的命令:
    nohup /usr/sbin/acct/runacct 0601 2>> \
    /var/adm/acct/nite/accterr & 
    此示例将重新启动 鲁纳克特 6 月 1 日 (0601)。 runacct 命令读取文件 /var/adm/acct/nite(x)/statefile 以找出开始的状态。 鲁纳克特 命令将在后台运行。&) ,忽略所有 INTERRUPT 和 QUIT 信号 (诺胡特)。 标准错误输出 (2) 添加到末尾 (>>) /var/adm/acct/nite(x)/accterr 文件。
  4. 要重新启动处于特定状态的特定日期的系统记帐过程,请输入类似于以下内容的命令:
    nohup /usr/sbin/acct/runacct 0601 MERGE 2>> \
     /var/adm/acct/nite(x)/accterr &
    1 示例将在 6 月 1 日重新启动 鲁纳克特 命令 (0601) ,从 MERGE 状态开始。 鲁纳克特 命令将在后台运行。&) ,忽略所有 INTERRUPT 和 QUIT 信号 ( 诺胡特 命令)。 标准错误输出 (2) 添加到末尾 (>>) /var/adm/acct/nite(x)/accterr 文件。

文件

描述
/var/adm/wtmp 登录/登出历史文件。
/var/adm/pacct* 处理记帐文件。
/var/adm/acct/nite(x)/daytacct 磁盘使用情况记帐文件。
/var/adm/qacct 活动的队列记帐文件。
/var/adm/fee 要用户付的费用的记录。
/var/adm/acct/sum(x)/* 命令和总的记帐摘要文件。
/var/adm/acct/nite (x) /ptacct *。mmdd pacct 文件的连结版本。
/var/adm/acct/nite(x)/active runacct 消息文件。
/var/adm/acct/nite(x)/lock* 防止 runacct 同时被调用。
/var/adm/acct/nite(x)/lastdate 包含 runacct 运行的最后日期。
/var/adm/acct/nite(x)/statefile 包含要处理的当前状态。