diff options
author | dougb <dougb@FreeBSD.org> | 2011-02-22 21:13:40 +0000 |
---|---|---|
committer | dougb <dougb@FreeBSD.org> | 2011-02-22 21:13:40 +0000 |
commit | 7cea22540cedabac2509b77af9bb24843679a751 (patch) | |
tree | 86f9fe33da39fa232a253a1453d72a02d08f1272 /etc/periodic | |
parent | f4cf481489b4389917b5159274baa5bbad704e3f (diff) | |
download | FreeBSD-src-7cea22540cedabac2509b77af9bb24843679a751.zip FreeBSD-src-7cea22540cedabac2509b77af9bb24843679a751.tar.gz |
Update how accounting log files are rotated.
The old version had a race between the time that the old file was
cp'ed to acct.0 and the time that 'sa -s' was run that prevented
the commands that occurred in the meantime from being backed up.
It's also arguable that the old version was inefficient in using
cp which can be a problem on a space-constrained system.
This version avoids both problems, albeit it's considerably more
complicated. The advantage of putting the log rotation in the rc.d
script is that it can handle the _enable and _file questions without
having to do gymnastics to discover either value in the periodic script.
As a side effect of reviewing the rc.d script I cleaned it up a bit.
Diffstat (limited to 'etc/periodic')
-rwxr-xr-x | etc/periodic/daily/310.accounting | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/etc/periodic/daily/310.accounting b/etc/periodic/daily/310.accounting index 0856399..b964616 100755 --- a/etc/periodic/daily/310.accounting +++ b/etc/periodic/daily/310.accounting @@ -41,13 +41,16 @@ case "$daily_accounting_enable" in m=$n n=$(($n - 1)) done - cp -pf acct acct.0 || rc=3 - sa -s $daily_accounting_flags || rc=3 + + /etc/rc.d/accounting rotate_log || rc=3 case "$daily_accounting_compress" in [Yy][Ee][Ss]) - gzip -f acct.0 || rc=3;; + gzip --keep -f acct.0 || rc=3;; esac + + sa -s $daily_accounting_flags /var/account/acct.0 && + unlink acct.0 || rc=3 fi;; *) rc=0;; |