summaryrefslogtreecommitdiffstats
path: root/scripts/init.d/cgred
blob: 3d9fe2aa80fe1869aecdc34d767ff59548241c5f (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
#!/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=${bindir}/cgrulesengd

# Sanity checks
[ -x $CGRED_BIN ] || exit 1
[ -x /lib/libcgroup.so ] || 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="--config $CONFIG_FILE --log $LOG_FILE $NODAEMON $NOLOG"
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 -12
	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