runacct Script
The main daily accounting script, runacct, is normally invoked by the cron command outside
of normal business hours. The runacct script processes connect, fee, disk, and
process accounting files. This script also prepares daily and cumulative summary files for
use by the prdaily and monacct scripts for billing purposes.
The runacct script takes care not to damage files if errors occur.
A series of protection mechanisms that are used to perform the following tasks:
This script records its progress by writing descriptive messages to the active file.
Files used by the runacct script are assumed to be in the /var/adm/acct/nite
directory, unless otherwise noted. All diagnostic output during the execution of the runacct
script is written to the fd2log file.
When the runacct script is invoked, it creates the lock and lock1 files.
These files are used to prevent simultaneous execution of the runacct script. The runacct
program prints an error message if these files exist when it is invoked.
The lastdate file contains the month and day the runacct script was last
invoked, and is used to prevent more than one execution per day.
If the runacct script detects an error, the following occurs:
For instructions on how to restart the runacct script, see How to Restart the runacct Script.
To allow the runacct script to be restarted, processing is broken down
into separate re-entrant states. The statefile file is used to track the last state
completed. When each state is completed, the statefile file is updated to reflect
the next state. After processing for the state is complete, the statefile file
is read and the next state is processed. When the runacct script reaches
the CLEANUP state, it removes the locks and ends. States are executed as
shown in the following table.
Table 10-1 States of the runacct Script
State |
Description |
SETUP |
The turnacct switch command is executed
to create a new pacct file. The /var/adm/pacctn process accounting files (except
for the pacct file) are moved to the /var/adm/Spacctn.MMDD files. The /var/adm/wtmpx file
is moved to the /var/adm/acct/nite/wtmp.MMDD file (with the current time record added on the
end) and a new /var/adm/wtmp file is created. The closewtmp and utmp2wtmp
programs add records to the wtmp.MMDD file and the new wtmpx file
to account for users who are currently logged in. |
WTMPFIX |
The wtmpfix program
checks the wtmp.MMDD file in the nite directory for accuracy. Because some date
changes cause the acctcon program to fail, the wtmpfix program attempts to adjust
the time stamps in the wtmpx file if a record of a date
change appears. This program also deletes any corrupted entries from the wtmpx file. The
fixed version of the wtmp.MMDD file is written to the tmpwtmp file. |
CONNECT |
The
acctcon program is used to record connect accounting records in the file ctacct.MMDD. These
records are in tacct.h format. In addition, the acctcon program creates the
lineuse and reboots files. The reboots file records all the boot records found
in the wtmpx file. |
PROCESS |
The acctprc program is used to convert
the /var/adm/Spacctn.MMDD process accounting files into complete accounting records in the ptacctn.MMDD files.
The Spacct and ptacct files are correlated by number so that if the
runacct script fails, the Spacct files are not processed. |
MERGE |
The acctmerg program merges
the process accounting records with the connect accounting records to form the daytacct
file. |
FEES |
The acctmerg program merges ASCII tacct records from the fee file into the
daytacct file. |
DISK |
The dodisk script produces the disktacct file. If the dodisk
script has been run, which produces the disktacct file, the DISK program
merges the file into the daytacct file and moves the disktacct file to
the /tmp/disktacct.MMDD file. |
MERGETACCT |
The acctmerg program merges the daytacct file with the sum/tacct
file, the cumulative total accounting file. Each day, the daytacct file is saved
in the sum/tacct.MMDD file so that the sum/tacct file can be re-created
if it is corrupted or lost. |
CMS |
The acctcms program is run several
times. This program is first run to generate the command summary by using
the Spacctn files and write the data to the sum/daycms file. The acctcms
program is then run to merge the sum/daycms file with the sum/cms
cumulative command summary file. Finally, the acctcms program is run to produce nite/daycms
and nite/cms, the ASCII command summary files from the sum/daycms and sum/cms files, respectively.
The lastlogin program is used to create the /var/adm/acct/sum/loginlog log file. This
file reports when each user last logged in. If the runacct script is
run after midnight, the dates showing the time last logged in by some
users will be incorrect by one day. |
USEREXIT |
Any installation-dependent (local) accounting program can
be run at this point. The runacct script expects this program to be called
the /usr/lib/acct/runacct.local program. |
CLEANUP |
This state cleans up temporary files, runs the prdaily
script and saves its output in the sum/rpt.MMDD file, removes the locks, and then
exits. |
Caution - When restarting the runacct script in the CLEANUP state, remove the last ptacct
file because this file will not be complete.