Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > d05f6404dc47873ab7005b8d2a404f13 > files > 13

libcgroup-0.36.2-7.fc14.x86_64.rpm

#!/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		CGroups 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=/usr;exec_prefix=/usr;sbindir=/sbin
CGRED_BIN=$sbindir/cgrulesengd
CGRED_CONF=/etc/cgrules.conf

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

# Source function library & LSB routines
. /etc/rc.d/init.d/functions
log_success_msg () {
    echo -n $*; success "$*"; echo
}
log_failure_msg () {
    echo -n $*; failure "$*"; echo
}
log_warning_msg () {
    echo -n $*; warning "$*"; echo
}

# 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 -n $"Starting CGroup Rules Engine Daemon: "
	if [ -f "/var/lock/subsys/$servicename" ] ; then
		log_failure_msg "$servicename is already running with PID `cat ${pidfile}`"
		return 0
	fi
	if [ ! -s $CGRED_CONF ]; then
		log_failure_msg "not configured"
		return 6
	fi
	daemon --check $servicename --pidfile $pidfile $CGRED_BIN $OPTIONS
	RETVAL=$?
	echo
	if [ $RETVAL -ne 0 ]; then
		return 7
	fi
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
	echo "`pidof $processname`" > $pidfile
}

stop()
{
	echo -n $"Stopping CGroup Rules Engine Daemon..."
	if [ ! -f $pidfile ]; then
		log_success_msg
		return 0
	fi
	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
		RETVAL=$?
		;;
	stop)
		stop
		RETVAL=$?
		;;
	status)
		status -p $pidfile $servicename
		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