From owner-svn-src-all@FreeBSD.ORG Sat Mar 5 02:12:36 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7B4141065673; Sat, 5 Mar 2011 02:12:36 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6062D8FC13; Sat, 5 Mar 2011 02:12:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p252CaPP089916; Sat, 5 Mar 2011 02:12:36 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p252CakQ089913; Sat, 5 Mar 2011 02:12:36 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201103050212.p252CakQ089913@svn.freebsd.org> From: Doug Barton Date: Sat, 5 Mar 2011 02:12:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r219284 - in stable/7/etc: periodic/daily rc.d X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Mar 2011 02:12:36 -0000 Author: dougb Date: Sat Mar 5 02:12:36 2011 New Revision: 219284 URL: http://svn.freebsd.org/changeset/base/219284 Log: MFC r218961: Update how accounting log files are rotated, clean up the rc.d script a bit. MFC r218986: The new accounting file needs to be 644 so that unprivileged users can use lastcomm(1) Modified: stable/7/etc/periodic/daily/310.accounting stable/7/etc/rc.d/accounting Directory Properties: stable/7/etc/ (props changed) Modified: stable/7/etc/periodic/daily/310.accounting ============================================================================== --- stable/7/etc/periodic/daily/310.accounting Sat Mar 5 02:11:23 2011 (r219283) +++ stable/7/etc/periodic/daily/310.accounting Sat Mar 5 02:12:36 2011 (r219284) @@ -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;; Modified: stable/7/etc/rc.d/accounting ============================================================================== --- stable/7/etc/rc.d/accounting Sat Mar 5 02:11:23 2011 (r219283) +++ stable/7/etc/rc.d/accounting Sat Mar 5 02:12:36 2011 (r219284) @@ -14,28 +14,31 @@ name="accounting" rcvar=`set_rcvar` accounting_command="/usr/sbin/accton" accounting_file="/var/account/acct" + +extra_commands="rotate_log" + start_cmd="accounting_start" stop_cmd="accounting_stop" +rotate_log_cmd="accounting_rotate_log" accounting_start() { local _dir - _dir=`dirname "$accounting_file"` - if [ ! -d `dirname "$_dir"` ]; then + _dir="${accounting_file%/*}" + if [ ! -d "$_dir" ]; then if ! mkdir -p "$_dir"; then - warn "Could not create $_dir." - return 1 + err 1 "Could not create $_dir." fi fi + if [ ! -e "$accounting_file" ]; then + echo -n "Creating accounting file ${accounting_file}" touch "$accounting_file" + echo '.' fi + chmod 644 "$accounting_file" - if [ ! -f ${accounting_file} ]; then - echo "Creating accounting file ${accounting_file}" - ( umask 022 ; > ${accounting_file} ) - fi echo "Turning on accounting." ${accounting_command} ${accounting_file} } @@ -46,5 +49,27 @@ accounting_stop() ${accounting_command} } +accounting_rotate_log() +{ + local _dir _file + + _dir="${accounting_file%/*}" + cd $_dir + + if checkyesno accounting_enable; then + _file=`mktemp newacct-XXXXX` + chmod 644 $_file + ${accounting_command} ${_dir}/${_file} + fi + + mv ${accounting_file} ${accounting_file}.0 + + if checkyesno accounting_enable; then + ln $_file ${accounting_file##*/} + ${accounting_command} ${accounting_file} + unlink $_file + fi +} + load_rc_config $name run_rc_command "$1"