summaryrefslogtreecommitdiffstats
path: root/source/ap/cgmanager/config
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/cgmanager/config')
-rw-r--r--source/ap/cgmanager/config/rc.cgmanager56
-rw-r--r--source/ap/cgmanager/config/rc.cgproxy58
2 files changed, 114 insertions, 0 deletions
diff --git a/source/ap/cgmanager/config/rc.cgmanager b/source/ap/cgmanager/config/rc.cgmanager
new file mode 100644
index 000000000..83c190619
--- /dev/null
+++ b/source/ap/cgmanager/config/rc.cgmanager
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# /etc/rc.d/rc.cgmanager - start/stop the cgroup manager
+
+if [ -f /etc/default/cgmanager ]; then
+ # get cgmanager options if specified
+ . /etc/default/cgmanager
+fi
+
+start_cgmanager() {
+ # Kill any existing cgproxy
+ /bin/sh /etc/rc.d/rc.cgproxy stop >/dev/null 2>&1 || true
+ # check whether to start cgproxy or cgmanager
+ if /usr/sbin/cgproxy --check-master; then
+ if [ -x /etc/rc.d/rc.cgproxy -a ! -r /run/cgmanager.pid ]; then
+ NESTED=yes /etc/rc.d/rc.cgproxy start || true && { exit 0; }
+ else
+ # If we are here, either cgmanager is already running (in which case
+ # we don't want to run it again), or rc.cgproxy is not executable
+ # (in which case we don't want to run it).
+ echo "Error: rc.cgproxy is not executable, or attempting to start multiple instances of cgmanager"
+ exit 1
+ fi
+ fi
+ echo "Starting cgmanager: /usr/sbin/cgmanager --daemon"
+ /usr/sbin/cgmanager --daemon
+}
+
+stop_cgmanager() {
+ # If the cgmanager stops, the proxy must also stop
+ /bin/sh /etc/rc.d/rc.cgproxy stop >/dev/null 2>&1 || true
+ echo "Stopping cgmanager."
+ /bin/kill $(cat /run/cgmanager.pid 2>/dev/null) 2>/dev/null
+ /usr/bin/pkill cgmanager 2>/dev/null
+ rm -f /run/cgmanager.pid
+}
+
+restart_cgmanager() {
+ stop_cgmanager
+ sleep 1
+ start_cgmanager
+}
+
+case "$1" in
+'start')
+ start_cgmanager
+ ;;
+'stop')
+ stop_cgmanager
+ ;;
+'restart')
+ restart_cgmanager
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/source/ap/cgmanager/config/rc.cgproxy b/source/ap/cgmanager/config/rc.cgproxy
new file mode 100644
index 000000000..bd96902cb
--- /dev/null
+++ b/source/ap/cgmanager/config/rc.cgproxy
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# /etc/rc.d/rc.cgproxy - start/stop the cgroup proxy manager
+
+if [ -f /etc/default/cgproxy ]; then
+ # get cgproxy options if specified
+ . /etc/default/cgproxy
+fi
+
+start_cgproxy() {
+ # cgproxy should only run on container unless on older kernel
+ if [ -e /proc/self/ns/pid ] && [ "$NESTED" != "yes" ]; then
+ echo "Error: cgproxy should only run inside containers"
+ exit 0
+ fi
+ echo "Starting cgproxy: /usr/sbin/cgproxy --daemon"
+ /usr/sbin/cgproxy --daemon
+}
+
+stop_cgproxy() {
+ if ps -C cgproxy | grep -q cgproxy 2>/dev/null ; then
+ echo "Stopping cgproxy."
+ if ! /bin/kill $(cat /run/cgproxy.pid 2>/dev/null) 2>/dev/null ; then
+ sleep 1
+ echo "Sending cgproxy the TERM signal."
+ if ! /usr/bin/pkill -TERM cgproxy ; then
+ sleep 5
+ echo "Sending cgproxy the KILL signal."
+ /usr/bin/pkill -KILL cgproxy
+ sleep 5
+ if ps -C cgproxy | grep -q cgproxy 2>/dev/null ; then
+ echo "Error: couldn't stop cgproxy."
+ fi
+ fi
+ fi
+ rm -f /run/cgproxy.pid
+ fi
+}
+
+restart_cgproxy() {
+ stop_cgproxy
+ sleep 1
+ start_cgproxy
+}
+
+case "$1" in
+'start')
+ start_cgproxy
+ ;;
+'stop')
+ stop_cgproxy
+ ;;
+'restart')
+ restart_cgproxy
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac