diff options
Diffstat (limited to 'source/ap/cgmanager/config')
-rw-r--r-- | source/ap/cgmanager/config/rc.cgmanager | 56 | ||||
-rw-r--r-- | source/ap/cgmanager/config/rc.cgproxy | 58 |
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 |