#!/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