Magellan Linux

Contents of /branches/magellan-next/include/mtools.minc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 19 - (show annotations) (download)
Thu Jun 2 21:21:16 2011 UTC (12 years, 11 months ago) by niro
File size: 7049 byte(s)
-try to determinate service_exec from unit name
1 # $Id$
2
3 # adds services to runlevels and starts them
4 # mstartservice service {/path/to/service_exec}
5 mstartservice()
6 {
7 local service="$1"
8 local service_exec="$2"
9
10 # only run if sysV init was found
11 if [[ ! -f /etc/rc.d/init.d/functions ]]
12 then
13 echo "sysV init not found, not adding service ${service} to runlevels!"
14 return
15 fi
16
17 if [[ -z ${service_exec} ]]
18 then
19 case ${service} in
20 *.service) service_exec="$(which ${service%%.service} 2> /dev/null)" ;;
21 *.socket) service_exec="$(which ${service%%.socket} 2> /dev/null)" ;;
22 *.mount) service_exec="$(which ${service%%.mount} 2> /dev/null)" ;;
23 *.target) service_exec="$(which ${service%%.target} 2> /dev/null)" ;;
24 *) service_exec="$(which ${service} 2> /dev/null)" ;;
25 esac
26 fi
27
28 # add service to default runlevels
29 echo -e " ${COLBLUE}[${COLGREEN}+${COLBLUE}]${COLDEFAULT} adding ${service} to default runlevels ..."
30 [[ -x ${MROOT}/etc/rc.d/init.d/${service} ]] && rc-config add ${service} &> /dev/null
31
32 # do not start services on bootstrap or MROOT!=/
33 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
34 then
35 # start service
36 if [[ -n $(pidof ${service_exec}) ]]
37 then
38 # restart service
39 /etc/init.d/${service} restart
40 else
41 # start service
42 /etc/init.d/${service} start
43 fi
44 fi
45 }
46
47 # removes services from runlevels and stops them
48 # mstopservice service {/path/to/service_exec}
49 mstopservice()
50 {
51 local service="$1"
52 local service_exec="$2"
53
54 # only run if sysV init was found
55 if [[ ! -f /etc/rc.d/init.d/functions ]]
56 then
57 echo "sysV init not found, not adding service ${service} to runlevels!"
58 return
59 fi
60
61 if [[ -z ${service_exec} ]]
62 then
63 case ${service} in
64 *.service) service_exec="$(which ${service%%.service} 2> /dev/null)" ;;
65 *.socket) service_exec="$(which ${service%%.socket} 2> /dev/null)" ;;
66 *.mount) service_exec="$(which ${service%%.mount} 2> /dev/null)" ;;
67 *.target) service_exec="$(which ${service%%.target} 2> /dev/null)" ;;
68 *) service_exec="$(which ${service} 2> /dev/null)" ;;
69 esac
70 fi
71
72 # only stop the service if ${service_exec} does not exist
73 [[ -f ${MROOT}/${service_exec} ]] && return
74
75 # del services from runlevel regardless if they exist or not
76 echo -e " ${COLBLUE}[${COLRED}-${COLBLUE}]${COLDEFAULT} removing ${service} from default runlevels ..."
77 rc-config del ${service} &> /dev/null
78
79 # do not stop services on bootstrap or MROOT!=/
80 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
81 then
82 # stop service if running
83 if [[ -n $(pidof ${service_exec}) ]]
84 then
85 killall -15 ${service_exec} &> /dev/null
86 sleep 1
87 killall -9 ${service_exec} &> /dev/null
88 fi
89 fi
90 }
91
92 # reloads a service if already running
93 # mreloadservice service {/path/to/service_exec}
94 mreloadservice()
95 {
96 local service="$1"
97 local service_exec="$2"
98
99 # only run if sysV init was found
100 if [[ ! -f /etc/rc.d/init.d/functions ]]
101 then
102 echo "sysV init not found, not adding service ${service} to runlevels!"
103 return
104 fi
105
106 if [[ -z ${service_exec} ]]
107 then
108 case ${service} in
109 *.service) service_exec="$(which ${service%%.service} 2> /dev/null)" ;;
110 *.socket) service_exec="$(which ${service%%.socket} 2> /dev/null)" ;;
111 *.mount) service_exec="$(which ${service%%.mount} 2> /dev/null)" ;;
112 *.target) service_exec="$(which ${service%%.target} 2> /dev/null)" ;;
113 *) service_exec="$(which ${service} 2> /dev/null)" ;;
114 esac
115 fi
116
117 # do not stop services on bootstrap or MROOT!=/
118 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
119 then
120 # only reload the service if running
121 if [[ -n $(pidof ${service_exec}) ]]
122 then
123 /etc/init.d/${service} reload
124 fi
125 fi
126 }
127
128
129 # adds systemd units to runlevels and starts them
130 # mstartunit service {/path/to/service_exec}
131 mstartunit()
132 {
133 local service="$1"
134 local service_exec="$2"
135
136 # only run if systemd was found
137 if [[ ! -x /bin/systemctl ]]
138 then
139 echo "systemd not found, not adding unit ${service} to runlevels!"
140 return
141 fi
142
143 # we do not support $MROOT atm
144 if [[ ${MROOT} != / ]] && [[ ! -z ${MROOT} ]]
145 then
146 echo "\$MROOT is set, doing nothing!"
147 echo "Please add unit ${service} manually to the runlevels!"
148 echo "Run 'systemctl enable ${service}' in your chroot later on."
149 return
150 fi
151
152 [[ -z ${service_exec} ]] && service_exec="$(which ${service})"
153
154 # add service to default runlevels
155 echo -e " ${COLBLUE}[${COLGREEN}+${COLBLUE}]${COLDEFAULT} adding unit ${service} to default runlevels ..."
156 # reload daemon to honor changed unit files
157 systemctl daemon-reload
158 systemctl enable ${service}
159
160 # do not start services on bootstrap or MROOT!=/
161 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
162 then
163 # start or restart the service
164 systemctl try-restart ${service}
165 fi
166 }
167
168 # removes systemd units from runlevels and stops them
169 # mstopunit service {/path/to/service_exec}
170 mstopunit()
171 {
172 local service="$1"
173 local service_exec="$2"
174
175 # only run if systemd was found
176 if [[ ! -x /bin/systemctl ]]
177 then
178 echo "systemd not found, not removing unit ${service} from runlevels!"
179 return
180 fi
181
182 # we do not support $MROOT atm
183 if [[ ${MROOT} != / ]] && [[ ! -z ${MROOT} ]]
184 then
185 echo "\$MROOT is set, doing nothing!"
186 echo "Please remove unit ${service} manually from the runlevels!"
187 echo "Run 'systemctl disable ${service}' in your chroot later on."
188 return
189 fi
190
191 [[ -z ${service_exec} ]] && service_exec="$(which ${service} 2> /dev/null)"
192
193 # only stop the service if ${service_exec} does not exist
194 [[ -f ${MROOT}/${service_exec} ]] && return
195
196 # del services from runlevel regardless if they exist or not
197 echo -e " ${COLBLUE}[${COLRED}-${COLBLUE}]${COLDEFAULT} removing unit ${service} from default runlevels ..."
198 # reload daemon to honor changed unit files
199 systemctl daemon-reload
200 systemctl disable ${service}
201
202 # do not stop services on bootstrap or MROOT!=/
203 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
204 then
205 systemctl stop ${service}
206 # try harder
207 if [[ -n $(pidof ${service_exec}) ]]
208 then
209 killall -15 ${service_exec} &> /dev/null
210 sleep 1
211 killall -9 ${service_exec} &> /dev/null
212 fi
213 fi
214 }
215
216 # reloads a systemd unit if already running
217 # mreloadunit service {/path/to/service_exec}
218 mreloadunit()
219 {
220 local service="$1"
221 local service_exec="$2"
222
223 # only run if systemd was found
224 if [[ ! -x /bin/systemctl ]]
225 then
226 echo "systemd not found, not removing unit ${service} from runlevels!"
227 return
228 fi
229
230 # we do not support $MROOT atm
231 if [[ ${MROOT} != / ]] && [[ ! -z ${MROOT} ]]
232 then
233 echo "\$MROOT is set, doing nothing!"
234 echo "Please remove unit ${service} manually from the runlevels!"
235 echo "Run 'systemctl disable ${service}' in your chroot later on."
236 return
237 fi
238
239 [[ -z ${service_exec} ]] && service_exec="$(which ${service} 2> /dev/null)"
240
241 # do not stop services on bootstrap or MROOT!=/
242 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
243 then
244 # only reload the service if running
245 systemctl reload-or-try-restart ${service}
246 fi
247 }