]> git.pld-linux.org Git - packages/libcgroup.git/blob - cgconfig.init
e1c60daaf4bb686e17a54722cd9eb6dd7eb7c1ab
[packages/libcgroup.git] / cgconfig.init
1 #!/bin/sh
2 #
3 # cgconfig      Control Groups Configuration Startup
4 # chkconfig:    2345 01 99
5 # description:  This script runs the cgconfigparser utility to parse and setup \
6 #               the control group filesystem. It uses /etc/cgconfig.conf \
7 #               and parses the configuration specified in there.
8
9 # Source function library
10 . /etc/rc.d/init.d/functions
11
12 # read the config
13 CREATE_DEFAULT=yes
14 [ -f /etc/sysconfig/cgconfig ] && . /etc/sysconfig/cgconfig
15
16 create_default_groups() {
17         local defaultcgroup controllers
18         if [ -f /etc/cgrules.conf ]; then
19                 defaultcgroup=$(awk '/^\*[\t ]+/ { print $3; exit }' /etc/cgrules.conf)
20                 if [ -n "$defaultcgroup" -a "$defaultcgroup" = "*" ]; then
21                 #       nls "/etc/cgrules.conf incorrect. Overriding it"
22                         defaultcgroup=
23                 fi
24         fi
25
26         if [ -z $defaultcgroup ]; then
27                 defaultcgroup=sysdefault/
28         fi
29
30         #
31         # Find all mounted subsystems and create comma-separated list
32         # of controllers.
33         #
34         controllers=$(lssubsys 2>/dev/null | awk '{ if (v) v=v","$0 ; else v=$0 } END { printf "%s", v }')
35
36         #
37         # Create the default group, ignore errors when the default group
38         # already exists.
39         #
40         cgcreate -f 664 -d 775 -g $controllers:$defaultcgroup 2>/dev/null
41
42         #
43         # special rule for cpusets
44         #
45         if echo $controllers | grep -q -w cpuset; then
46                 local cpus mems
47                 cpus=$(cgget -nv -r cpuset.cpus /)
48                 cgset -r cpuset.cpus=$cpus $defaultcgroup
49                 mems=$(cgget -nv -r cpuset.mems /)
50                 cgset -r cpuset.mems=$mems $defaultcgroup
51         fi
52
53         #
54         # Classify everything to default cgroup. Ignore errors, some processes
55         # may exit after ps is run and before cgclassify moves them.
56         #
57         cgclassify -g $controllers:$defaultcgroup $(ps --no-headers -eL o tid) 2>/dev/null || :
58 }
59
60 start() {
61         # Check if the service is already running?
62         if [ -f /var/lock/subsys/cgconfig ]; then
63                 msg_already_running "cgconfig"
64                 return
65         fi
66         if [ ! -s /etc/cgconfig.conf ]; then
67                 nls "/etc/cgconfig.conf is not configured"
68                 RETVAL=6
69                 return
70         fi
71         msg_starting "cgconfig"; busy
72         local out
73         out=$(/sbin/cgconfigparser -l /etc/cgconfig.conf 2>&1)
74         RETVAL=$?
75         if [ $RETVAL -ne 0 ]; then
76                 fail
77                 [ "$out" ] && echo >&2 "$out"
78                 exit $RETVAL
79         fi
80
81         if is_yes "$CREATE_DEFAULT"; then
82                 create_default_groups
83         fi
84         RETVAL=$?
85         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/cgconfig
86         ok
87 }
88
89 stop() {
90         if [ ! -f /var/lock/subsys/cgconfig ]; then
91                 msg_not_running "cgconfig"
92                 return
93         fi
94
95         msg_stopping "cgconfig"
96         cgclear
97         cgclear
98         rm -f /var/lock/subsys/cgconfig
99         ok
100 }
101
102 condrestart() {
103         if [ ! -f /var/lock/subsys/cgconfig ]; then
104                 msg_not_running "cgconfig"
105                 RETVAL=$1
106                 return
107         fi
108
109         stop
110         start
111 }
112
113 RETVAL=0
114 case "$1" in
115   start)
116         start
117         ;;
118   stop)
119         stop
120         ;;
121   restart)
122         stop
123         start
124         ;;
125   try-restart)
126         condrestart 0
127         ;;
128   force-reload)
129         condrestart 7
130         ;;
131   status)
132         if [ -f /var/lock/subsys/cgconfig ] ; then
133                 echo "Running"
134                 exit 0
135         else
136                 echo "Stopped"
137                 exit 3
138         fi
139         ;;
140   *)
141         msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
142         exit 3
143         ;;
144 esac
145
146 exit $RETVAL
This page took 0.060286 seconds and 2 git commands to generate.