summaryrefslogtreecommitdiffstats
path: root/scripts/init.d/cgred
blob: f0eebc4e6c7941abed2c3b0af7b3b4fdcf0190ab (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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
#
# Start/Stop the CGroups Rules Engine Daemon
#
# Copyright Red Hat Inc. 2008
#
# Authors:	Steve Olivieri <sjo@redhat.com>
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
# 
# This program is distributed in the hope that it would be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# cgred		GGroups Rules Engine Daemon
# chkconfig:	2345 80 20
# description:	This is a daemon for automatically classifying processes \
#		into cgroups based on UID/GID.
#
# processname: cgrulesengd
# pidfile: /var/run/cgred.pid
#
### BEGIN INIT INFO
# Provides:		cgrulesengd
# Required-Start:	$local_fs $syslog $cgconfig
# Required-Stop:	$local_fs $syslog
# Should-Start:		
# Should-Stop:		
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	start and stop the cgroups rules engine daemon
# Description:		CGroup Rules Engine is a tool for automatically using \
#			cgroups to classify processes
### END INIT INFO

prefix=/usr
exec_prefix=/usr
bindir=/bin

CGRED_BIN=${exec_prefix}/${bindir}/cgrulesengd

# Sanity checks
[ -x $CGRED_BIN ] || exit 1

# Source function library & LSB routines
. /etc/rc.d/init.d/functions
. /lib/lsb/init-functions

# Read in configuration options.
if [ -f "/etc/cgred.d/cgred.conf" ] ; then
	. /etc/cgred.d/cgred.conf
	OPTIONS="$NODAEMON $LOG"
	if [ -n "$LOG_FILE" ]; then
		OPTIONS="$OPTIONS --log-file=$LOG_FILE"
	fi
else
	OPTIONS=""
fi

# For convenience
processname=cgrulesengd
servicename=cgred
pidfile=/var/run/cgred.pid

RETVAL=0

start()
{
	echo $"Starting CGroup Rules Engine Daemon..."
	if [ -f "/var/lock/subsys/$servicename" ] ; then
		echo "$servicename is already running with PID `cat ${pidfile}`"
		return 1
	fi
	daemon --check $servicename --pidfile $pidfile $processname $OPTIONS
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
	echo "`pidof $processname`" > $pidfile
}

stop()
{
	echo -n $"Stopping CGroup Rules Engine Daemon..."
	killproc -p $pidfile $processname -TERM
	RETVAL=$?
	echo
	if [ $RETVAL -eq 0 ] ; then
		rm -f /var/lock/subsys/$servicename
		rm -f $pidfile
	fi
}

# See how we are called
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	status)
		status -p $pidfile $processname
		RETVAL=$?
		;;
	restart)
		stop
		start
		;;
	condrestart)
		if [ -f /var/lock/subsys/$servicename ] ; then
			stop
			start
		fi
		;;
	flash)
		if [ -f /var/lock/subsys/$servicename ] ; then
			echo $"Reloading rules configuration..."
			kill -s 12 `cat ${pidfile}`
			RETVAL=$?
			echo
		else
			echo $"$servicename is not running."
		fi
		;;
	*)
		echo $"Usage: $0 {start|stop|status|restart|condrestart|flash}"
		;;
esac

exit $RETVAL