xref: /freebsd/libexec/rc/rc.d/accounting (revision 123af6ec70016f5556da5972d4d63c7d175c06d3)
1#!/bin/sh
2#
3# $FreeBSD$
4#
5
6# PROVIDE: accounting
7# REQUIRE: mountcritremote
8# BEFORE: DAEMON
9# KEYWORD: nojail
10
11. /etc/rc.subr
12
13name="accounting"
14rcvar="accounting_enable"
15accounting_command="/usr/sbin/accton"
16accounting_file="/var/account/acct"
17
18extra_commands="rotate_log"
19
20start_cmd="accounting_start"
21stop_cmd="accounting_stop"
22rotate_log_cmd="accounting_rotate_log"
23
24accounting_start()
25{
26	local _dir
27
28	_dir="${accounting_file%/*}"
29	if [ ! -d "$_dir" ]; then
30		if ! mkdir -p "$_dir"; then
31			err 1 "Could not create $_dir."
32		fi
33	fi
34
35	if [ ! -e "$accounting_file" ]; then
36		echo -n "Creating accounting file ${accounting_file}"
37		touch "$accounting_file"
38		echo '.'
39	fi
40	chmod 644 "$accounting_file"
41
42	echo "Turning on accounting."
43	${accounting_command} ${accounting_file}
44}
45
46accounting_stop()
47{
48	echo "Turning off accounting."
49	${accounting_command}
50}
51
52accounting_rotate_log()
53{
54	local _dir _file
55
56	_dir="${accounting_file%/*}"
57	cd $_dir
58
59	if checkyesno accounting_enable; then
60		_file=`mktemp newacct-XXXXX`
61		chmod 644 $_file
62		${accounting_command} ${_dir}/${_file}
63	fi
64
65	mv ${accounting_file} ${accounting_file}.0
66
67	if checkyesno accounting_enable; then
68		mv $_file ${accounting_file}
69	fi
70}
71
72load_rc_config $name
73run_rc_command "$1"
74