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:

Recognize an error

Provide intelligent diagnostics

Complete processing in such a way that the runacct script
can be restarted with minimal intervention

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.

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 turnacctswitch 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.