summaryrefslogtreecommitdiffstats
path: root/source/ap/cgmanager/config/rc.cgproxy
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/cgmanager/config/rc.cgproxy')
-rw-r--r--source/ap/cgmanager/config/rc.cgproxy58
1 files changed, 58 insertions, 0 deletions
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