#!/bin/sh
#
# cgconfig Control Groups Configuration Startup
-# chkconfig: - 5 95
+# chkconfig: 2345 01 99
# description: This script runs the cgconfigparser utility to parse and setup \
# the control group filesystem. It uses /etc/cgconfig.conf \
# and parses the configuration specified in there.
[ -f /etc/sysconfig/cgconfig ] && . /etc/sysconfig/cgconfig
create_default_groups() {
+ local defaultcgroup controllers
if [ -f /etc/cgrules.conf ]; then
defaultcgroup=$(awk '/^\*[\t ]+/ { print $3; exit }' /etc/cgrules.conf)
if [ -n "$defaultcgroup" -a "$defaultcgroup" = "*" ]; then
- nls "/etc/cgrules.conf incorrect"
- nls "Overriding it"
+ # nls "/etc/cgrules.conf incorrect. Overriding it"
defaultcgroup=
fi
fi
# Find all mounted subsystems and create comma-separated list
# of controllers.
#
- controllers=`lssubsys 2>/dev/null | tr '\n' ',' | sed s/.$//`
+ controllers=$(lssubsys 2>/dev/null | awk '{ if (v) v=v","$0 ; else v=$0 } END { printf "%s", v }')
#
# Create the default group, ignore errors when the default group
# special rule for cpusets
#
if echo $controllers | grep -q -w cpuset; then
- cpus=`cgget -nv -r cpuset.cpus /`
+ local cpus mems
+ cpus=$(cgget -nv -r cpuset.cpus /)
cgset -r cpuset.cpus=$cpus $defaultcgroup
- mems=`cgget -nv -r cpuset.mems /`
+ mems=$(cgget -nv -r cpuset.mems /)
cgset -r cpuset.mems=$mems $defaultcgroup
fi
# Classify everything to default cgroup. Ignore errors, some processes
# may exit after ps is run and before cgclassify moves them.
#
- cgclassify -g $controllers:$defaultcgroup `ps --no-headers -eL o tid` 2>/dev/null || :
+ cgclassify -g $controllers:$defaultcgroup $(ps --no-headers -eL o tid) 2>/dev/null || :
}
start() {
msg_already_running "cgconfig"
return
fi
-
- msg_starting "cgconfig"
if [ ! -s /etc/cgconfig.conf ]; then
nls "/etc/cgconfig.conf is not configured"
- return 6
+ RETVAL=6
+ return
fi
-
- /sbin/cgconfigparser -l /etc/cgconfig.conf
- retval=$?
- if [ $retval -ne 0 ]; then
- nls "Failed to parse /etc/cgconfig.conf"
- return 1
+ msg_starting "cgconfig"; busy
+ local out
+ out=$(/sbin/cgconfigparser -l /etc/cgconfig.conf 2>&1)
+ RETVAL=$?
+ if [ $RETVAL -ne 0 ]; then
+ fail
+ [ "$out" ] && echo >&2 "$out"
+ exit $RETVAL
fi
if is_yes "$CREATE_DEFAULT"; then
create_default_groups
fi
- retval=$?
- [ $retval -eq 0 ] && touch /var/lock/subsys/cgconfig
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/cgconfig
ok
}
stop() {
- if [ -f /var/lock/subsys/cgconfig ]; then
- msg_stopping "cgconfig"
- cgclear
- rm -f /var/lock/subsys/cgconfig
- ok
- else
+ if [ ! -f /var/lock/subsys/cgconfig ]; then
msg_not_running "cgconfig"
+ return
fi
+
+ msg_stopping "cgconfig"
+ cgclear
+ rm -f /var/lock/subsys/cgconfig
+ ok
}
-RETVAL=0
+condrestart() {
+ if [ ! -f /var/lock/subsys/cgconfig ]; then
+ msg_not_running "cgconfig"
+ RETVAL=$1
+ return
+ fi
+
+ stop
+ start
+}
+RETVAL=0
case "$1" in
start)
start
;;
stop)
- stop;
+ stop
;;
- restart|reload)
+ restart)
stop
start
;;
- condrestart)
- if [ -f /var/lock/subsys/cgconfig ] ; then
- stop
- start
- fi
+ try-restart)
+ condrestart 0
+ ;;
+ force-reload)
+ condrestart 7
;;
status)
if [ -f /var/lock/subsys/cgconfig ] ; then
fi
;;
*)
- msg_usage "$0 {start|stop|restart|condrestart|status}"
+ msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
exit 3
;;
esac