System Administration Guide, Volume 2

Setting Up System Accounting

You can set up system accounting to run while the system is in multiuser mode (system state 2). Generally, this involves:

  1. Creating /etc/rc0.d/K22acct and /etc/rc2.d/S22acct

  2. Modifying /var/spool/cron/crontabs/adm and /var/spool/cron/crontabs/root

Most of the accounting scripts are added to the /var/spool/cron/crontabs/adm database file. The following table describes the default accounting scripts.

Table 31-1 Default Accounting Scripts

Accounting Script ... 

Is Used To ... 

And Runs ... 

ckpacct(1M)

Check the size of the /usr/adm/pacct log file

Periodically 

runacct(1M)

Process connect, disk, and fee accounting information 

Daily 

monacct(1M)

Generate fiscal reports and is run once per period 

On a fiscal basis 

You can change these defaults. After these entries have been added to the database and the accounting programs have been installed, accounting should run automatically.

How to Set Up System Accounting

  1. Become superuser.

  2. If necessary, install the SUNWaccr and SUNWaccu packages on your system by using the pkgadd command.

  3. Install /etc/init.d/acct as the startup script for Run Level 2.


    # ln /etc/init.d/acct /etc/rc2.d/S22acct
    
  4. Install /etc/init.d/acct as the stop script for Run Level 0.


    # ln /etc/init.d/acct /etc/rc0.d/K22acct
    
  5. Add the following lines to the adm crontab file to start the ckpacct, runacct, and monacct programs automatically.


    # EDITOR=vi; export EDITOR
    # crontab -e adm
    0 * * * * /usr/lib/acct/ckpacct
    30 2 * * * /usr/lib/acct/runacct 2> /var/adm/acct/nite/fd2log
    30 7 1 * * /usr/lib/acct/monacct
  6. Add the following line to the root crontab file to start the dodisk program automatically.


    # crontab -e
    30 22 * * 4 /usr/lib/acct/dodisk
  7. Edit /etc/acct/holidays to include national and local holidays.

  8. Reboot the system, or type:


    # /etc/init.d/acct start
    

Examples--Setting Up Accounting

The following example shows how the crontab entries that run /usr/lib/acct/ckpacct, /usr/lib/acct/runacct, and /usr/lib/acct/monacct have been added to /var/spool/cron/crontabs/adm.


#ident  "@(#)adm        1.5     92/07/14 SMI"    /* SVr4.0 1.2   */
#
# The adm crontab file should contain startup of performance 
# collection if the profiling and performance feature has been 
# installed.
0 * * * * /usr/lib/acct/ckpacct
30 2 * * * /usr/lib/acct/runacct 2> /var/adm/acct/nite/fd2log
30 7 1 * * /usr/lib/acct/monacct

The following example shows how the crontab entry that runs /usr/lib/acct/dodisk has been added to /var/spool/cron/crontabs/root.


#ident  "@(#)root       1.16    98/04/28 SMI"   /* SVr4.0 1.1.3.1       */
#
# The root crontab should be used to perform accounting data collection.
#
# The rtc command is run to adjust the real time clock if and when
# daylight savings time changes.
#
10 3 * * 0,4 /etc/cron.d/logchecker
10 3 * * 0   /usr/lib/newsyslog
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
30 22 * * 4 /usr/lib/acct/dodisk
 

The following example shows a sample /etc/acct/holidays file.


* @(#)holidays	January 1, 1999
*
* Prime/Nonprime Table for UNIX Accounting System
*
* Curr	Prime	Non-Prime
* Year	Start	Start
*
  1999	0800	1800
*
* only the first column (month/day) is significant.
*
* month/day	Company
* 		Holiday
*
1/1		New Years Day
7/4		Indep. Day
12/25		Christmas