b8cb2346fc
if the accounting log file is atomically replaced with a new file (such as during log rotation). - Simplify accounting log rotation a bit. There is no need to re-run accton(8) after renaming the new log file to it's real name. PR: kern/167321 Tested by: Jeremy Chadwick
74 lines
1.2 KiB
Bash
Executable File
74 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: accounting
|
|
# REQUIRE: mountcritremote
|
|
# BEFORE: DAEMON
|
|
# KEYWORD: nojail
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="accounting"
|
|
rcvar="accounting_enable"
|
|
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="${accounting_file%/*}"
|
|
if [ ! -d "$_dir" ]; then
|
|
if ! mkdir -p "$_dir"; then
|
|
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"
|
|
|
|
echo "Turning on accounting."
|
|
${accounting_command} ${accounting_file}
|
|
}
|
|
|
|
accounting_stop()
|
|
{
|
|
echo "Turning off accounting."
|
|
${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
|
|
mv $_file ${accounting_file}
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|