181ea85a8SBrad Davis#!/bin/sh 281ea85a8SBrad Davis# 381ea85a8SBrad Davis# 481ea85a8SBrad Davis 581ea85a8SBrad Davis# If there is a global system configuration file, suck it in. 681ea85a8SBrad Davis# 781ea85a8SBrad Davisif [ -r /etc/defaults/periodic.conf ] 881ea85a8SBrad Davisthen 981ea85a8SBrad Davis . /etc/defaults/periodic.conf 1081ea85a8SBrad Davis source_periodic_confs 1181ea85a8SBrad Davisfi 1281ea85a8SBrad Davis 1381ea85a8SBrad Daviscase "$daily_accounting_enable" in 1481ea85a8SBrad Davis [Yy][Ee][Ss]) 1581ea85a8SBrad Davis if [ ! -f /var/account/acct ] 1681ea85a8SBrad Davis then 1781ea85a8SBrad Davis echo '$daily_accounting_enable is set but /var/account/acct' \ 1881ea85a8SBrad Davis "doesn't exist" 1981ea85a8SBrad Davis rc=2 20*9ab40bc4SJohn Grafton elif [ $(sysctl -n kern.acct_configured) -eq 0 ] 21*9ab40bc4SJohn Grafton then 22*9ab40bc4SJohn Grafton echo '$daily_accounting_enable is set but' \ 23*9ab40bc4SJohn Grafton 'process accounting is not active' 24*9ab40bc4SJohn Grafton rc=2 2581ea85a8SBrad Davis elif [ -z "$daily_accounting_save" ] 2681ea85a8SBrad Davis then 2781ea85a8SBrad Davis echo '$daily_accounting_enable is set but ' \ 2881ea85a8SBrad Davis '$daily_accounting_save is not' 2981ea85a8SBrad Davis rc=2 3081ea85a8SBrad Davis else 3181ea85a8SBrad Davis echo "" 3281ea85a8SBrad Davis echo "Rotating accounting logs and gathering statistics:" 3381ea85a8SBrad Davis 3481ea85a8SBrad Davis cd /var/account 3581ea85a8SBrad Davis rc=0 3681ea85a8SBrad Davis 3781ea85a8SBrad Davis n=$(( $daily_accounting_save - 1 )) 3881ea85a8SBrad Davis for f in acct.*; do 3981ea85a8SBrad Davis case "$f" in acct.\*) continue ;; esac # No files match 4081ea85a8SBrad Davis m=${f%.gz} ; m=${m#acct.} 4181ea85a8SBrad Davis [ $m -ge $n ] && { rm $f || rc=3; } 4281ea85a8SBrad Davis done 4381ea85a8SBrad Davis 4481ea85a8SBrad Davis m=$n 4581ea85a8SBrad Davis n=$(($n - 1)) 4681ea85a8SBrad Davis while [ $n -ge 0 ] 4781ea85a8SBrad Davis do 4881ea85a8SBrad Davis [ -f acct.$n.gz ] && { mv -f acct.$n.gz acct.$m.gz || rc=3; } 4981ea85a8SBrad Davis [ -f acct.$n ] && { mv -f acct.$n acct.$m || rc=3; } 5081ea85a8SBrad Davis m=$n 5181ea85a8SBrad Davis n=$(($n - 1)) 5281ea85a8SBrad Davis done 5381ea85a8SBrad Davis 54545151d1SIan Lepore /etc/rc.d/accounting onerotate_log || rc=3 5581ea85a8SBrad Davis 5681ea85a8SBrad Davis rm -f acct.merge && cp acct.0 acct.merge || rc=3 5781ea85a8SBrad Davis sa -s $daily_accounting_flags /var/account/acct.merge || rc=3 5881ea85a8SBrad Davis rm acct.merge 5981ea85a8SBrad Davis 6081ea85a8SBrad Davis case "$daily_accounting_compress" in 6181ea85a8SBrad Davis [Yy][Ee][Ss]) 6281ea85a8SBrad Davis gzip -f acct.0 || rc=3;; 6381ea85a8SBrad Davis esac 6481ea85a8SBrad Davis fi;; 6581ea85a8SBrad Davis 6681ea85a8SBrad Davis *) rc=0;; 6781ea85a8SBrad Davisesac 6881ea85a8SBrad Davis 6981ea85a8SBrad Davisexit $rc 70