summaryrefslogtreecommitdiff
blob: bf1b18e535414197fe8ccd6fbc1ccaf4c0288cf3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/sbin/runscript

description='Start/stop the preload daemon'
extra_started_commands='dump reload'
description_dump='Dump the config and state of the daemon (to the logfile)'
description_reload='Reload the daemon'

PIDFILE="/var/run/preload.pid"

depend() {
	after localmount
	use netmount ntpd
}

dump() {
	local pid
	pid=$(cat ${PIDFILE})

	ebegin "Dumping the config and state of preload"
	if [ -n "${pid}" ]; then
		kill -USR1 ${pid}
		kill -USR2 ${pid}
	fi
	eend ${?} && \
	einfo "These should have been written to ${PRELOAD_LOGFILE:-/var/log/preload.log}"
}

reload() {
	ebegin "Reloading preload"
	kill -HUP $(cat ${PIDFILE})
	eend ${?}
}

start() {
	local ionice

	ebegin "Starting preload"

	#MIN_MEMORY=${MIN_MEMORY:-256}
	# Check for > MIN_MEMORY MB
	#free -m | awk '/Mem:/ {exit ($2 >= ('"$MIN_MEMORY"'))?0:1}' || exit 0

	# First try to start with ionice; if that fails, try without.
	for ionice in "ionice ${IONICE_OPTS:--c3}" ''; do
		# Avoid 'ionice not found' errors
		${ionice} true >/dev/null 2>&1 || continue

		${ionice} start-stop-daemon --start --quiet --background \
			--make-pidfile --pidfile ${PIDFILE} \
			--exec /usr/sbin/preload -- \
			-l ${PRELOAD_LOGFILE:-/var/log/preload.log} \
			-V ${PRELOAD_VERBOSITY:-1} \
			-n ${PRELOAD_NICE:-15} \
			-s ${PRELOAD_STATEFILE:-""} \
			${PRELOAD_OPTS} -f \
			&& break
	done

	eend ${?}
}

stop() {
	ebegin "Stopping preload (this may take a while)"
	start-stop-daemon --stop --retry 120 --quiet --pidfile ${PIDFILE}
	eend ${?}
}