summaryrefslogtreecommitdiffstats
path: root/scripts/init.d/cgred.in
blob: 4c6d34abf4fcbc4c2d7b32818aef65711b9eeb38 (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:	- 14 86
# 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:		
# 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=@prefix@;exec_prefix=@exec_prefix@;sbindir=@sbindir@
CGRED_BIN=$sbindir/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/sysconfig/cgred.conf" ] ; then
	. /etc/sysconfig/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
		log_failure_msg "$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
	log_success_msg
}

# 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
		;;
	reload|flash)
		if [ -f /var/lock/subsys/$servicename ] ; then
			echo $"Reloading rules configuration..."
			kill -s 12 `cat ${pidfile}`
			RETVAL=$?
			if [ $RETVAL -eq 0 ] ; then
				log_success_msg
			else
				log_failure_msg
			fi
		else
			log_failure_msg "$servicename is not running."
		fi
		;;
	*)
		echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
		;;
esac

exit $RETVAL