runacct 命令
用途
运行每日记帐。
语法
/usr/sbin/acct/runacct [ mmdd [ 状态 ]]
描述
runacct 命令是主要的每日记帐 shell 过程。 runacct 命令一般由 cron 守护程序启动,该命令处理当天的连接、费用、磁盘、队列系统(打印机)以及进程记帐数据文件来产生二进制格式的每日报告 /var/adm/acct/nite(x)/dayacct。 runacct 命令也为 prdaily 过程准备了摘要文件以准备 ASCII 格式的每日报告 /var/adm/acct/sum(x)/rprtmmdd,或用于记帐。
acctmerg 命令将 dayacct 报告添加到记帐周期的累计摘要报告 /var/adm/acct/sum(x)/tacct。 tacct 报告被 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) 目录中创建了两个临时文件 lock 和 lock1,过程使用它们来防止同时发生两个对 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 文件以获取诊断消息,然后修正任何被破坏了的数据文件,如 pacct 或 wtmp。 在重新启动 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 子命令。
示例
- 要对系统资源启动每日记帐过程,请将以下命令行添加到 Crontab 文件,以便 鲁纳克特 命令将由 Cron 守护程序自动运行:
要使用长用户名支持来启动每日记帐过程,请将以下行添加到 crontab 文件:0 4 * * 1-6 /usr/sbin/acct/runacct 2> \ /var/adm/acct/nite/accterr
这个示例显示了 cron 守护程序会读取和执行的指示信息。 runacct 命令将在 4 a.m运行。04) 每个星期一至星期六 (1-6) 并写入所有标准错误输出 (2>) 到 /var/adm/acct/nite(x)/accterr 文件。 此命令仅仅是通常提供给 cron 守护程序的记帐指示信息之一。0 4 * * 1-6 /usr/sbin/acct/runacct -X 2> \ /var/adm/acct/nitex/accterr - 要从命令行 (启动 鲁纳克特 命令) 启动系统资源的日常记帐过程,请输入以下命令:
尽管最好用 cron 守护程序自动启动 runacct 过程(参见例 1),您也可以从键盘输入命令。 鲁纳克特 命令将在后台运行。&) ,忽略所有 INTERRUPT 和 QUIT 信号 ( 诺胡特 命令) ,并写入所有标准错误输出 (2>) 到 /var/adm/acct/nite/accterr 文件。nohup /usr/sbin/acct/runacct 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 文件。nohup /usr/sbin/acct/runacct 0601 2>> \ /var/adm/acct/nite/accterr & - 要重新启动处于特定状态的特定日期的系统记帐过程,请输入类似于以下内容的命令:
1 示例将在 6 月 1 日重新启动 鲁纳克特 命令 (0601) ,从 MERGE 状态开始。 鲁纳克特 命令将在后台运行。&) ,忽略所有 INTERRUPT 和 QUIT 信号 ( 诺胡特 命令)。 标准错误输出 (2) 添加到末尾 (>>) /var/adm/acct/nite(x)/accterr 文件。nohup /usr/sbin/acct/runacct 0601 MERGE 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 | 包含要处理的当前状态。 |