Copyright 1989 AT&T Copyright (c) 1999 Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
/usr/lib/acct/runacct [mmdd [state]]
runacct is the main daily accounting shell procedure. It is normally initiated using cron. runacct processes connect, fee, disk, and process accounting files. It also prepares summary files for prdaily or billing purposes. runacct is distributed only to source code licensees.
runacct takes care not to damage active accounting files or summary files in the event of errors. It records its progress by writing descriptive diagnostic messages into active. When an error is detected, a message is written to /dev/console, mail (see mail(1)) is sent to root and adm, and runacct terminates. runacct uses a series of lock files to protect against re-invocation. The files lock and lock1 are used to prevent simultaneous invocation, and lastdate is used to prevent more than one invocation per day.
runacct breaks its processing into separate, restartable states using statefile to remember the last state completed. It accomplishes this by writing the state name into statefile. runacct then looks in statefile to see what it has done and to determine what to process next. states are executed in the following order: SETUP
Move active accounting files into working files.
Verify integrity of wtmpx file, correcting date changes if necessary.
Produce connect session records in tacct.h format.
Convert process accounting records into tacct.h format.
Merge the connect and process accounting records.
Convert output of chargefee into tacct.h format, merge with connect, and process accounting records.
Merge disk accounting records with connect, process, and fee accounting records.
Merge the daily total accounting records in daytacct with the summary total accounting records in /var/adm/acct/sum/tacct.
Produce command summaries.
Any installation dependent accounting programs can be included here.
Clean up temporary files and exit. To restart runacct after a failure, first check the active file for diagnostics, then fix any corrupted data files, such as pacct or wtmpx. The lock, lock1, and lastdate files must be removed before runacct can be restarted. The argument mmdd is necessary if runacct is being restarted. mmdd specifies the month and day for which runacct will rerun the accounting. The entry point for processing is based on the contents of statefile; to override this, include the desired state on the command line to designate where processing should begin.
Example 1 Starting runacct
The following example starts runacct:
example% nohup runacct 2> /var/adm/acct/nite/fd2log &
Example 2 Restarting runacct
The following example restarts runacct:
example% nohup runacct 0601 2>> /var/adm/acct/nite/fd2log &
Example 3 Restarting runacct at a Specific State
The following example restarts runacct at a specific state:
example% nohup runacct 0601 MERGE 2>> /var/adm/acct/nite/fd2log &
History of user access and administration information
acctcom(1), mail(1), acct(1M), acctcms(1M), acctcon(1M), acctmerg(1M), acctprc(1M), acctsh(1M), cron(1M), fwtmp(1M), acct(2), acct.h(3HEAD), utmpx(4), attributes(5)
It is not recommended to restart runacct in the SETUP state. Run SETUP manually and restart using:
runacct mmdd WTMPFIX
If runacct failed in the PROCESS state, remove the last ptacct file because it will not be complete.
The runacct command can process a maximum of
6000 distinct sessions
1000 distinct terminal lines
2000 distinct login names
during a single invocation of the command. If at some point the actual number of any one of these items exceeds the maximum, the command will not succeed.
Do not invoke runacct at the same time as ckpacct, as there may be a conflict if both scripts attempt to execute turnacct switch simultaneously.