Magellan Linux

Contents of /trunk/include/mtools.minc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 43 - (show annotations) (download)
Mon Jan 30 22:43:33 2012 UTC (12 years, 3 months ago) by niro
File size: 8136 byte(s)
- also search for /usr/bin/systemctl
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 # don't run if feature !autosvc was set
18 if mqueryfeature "!autosvc"
19 then
20 echo "!autosvc detected; auto management of services disabled."
21 return
22 fi
23
24 [[ -z ${service_exec} ]] && service_exec="$(which ${service})"
25
26 # add service to default runlevels
27 echo -e " ${COLBLUE}[${COLGREEN}+${COLBLUE}]${COLDEFAULT} adding ${service} to default runlevels ..."
28 [[ -x ${MROOT}/etc/rc.d/init.d/${service} ]] && rc-config add ${service} &> /dev/null
29
30 # do not start services on bootstrap or MROOT!=/
31 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
32 then
33 # start service
34 if [[ -n $(pidof ${service_exec}) ]]
35 then
36 # restart service
37 /etc/init.d/${service} restart
38 else
39 # start service
40 /etc/init.d/${service} start
41 fi
42 fi
43 }
44
45 # removes services from runlevels and stops them
46 # mstopservice service {/path/to/service_exec}
47 mstopservice()
48 {
49 local service="$1"
50 local service_exec="$2"
51
52 # only run if sysV init was found
53 if [[ ! -f /etc/rc.d/init.d/functions ]]
54 then
55 echo "sysV init not found, not adding service ${service} to runlevels!"
56 return
57 fi
58
59 # don't run if feature !autosvc was set
60 if mqueryfeature "!autosvc"
61 then
62 echo "!autosvc detected; auto management of services disabled."
63 return
64 fi
65
66 if [[ -z ${service_exec} ]]
67 then
68 service_exec="$(which ${service})"
69 elif [[ x$(basename ${service_exec}) = x${service_exec} ]]
70 then
71 # expand full path
72 service_exec="$(which ${service_exec})"
73 fi
74
75 # only stop the service if ${service_exec} does not exist
76 [[ -x ${MROOT}/${service_exec} ]] && return
77
78 # del services from runlevel regardless if they exist or not
79 echo -e " ${COLBLUE}[${COLRED}-${COLBLUE}]${COLDEFAULT} removing ${service} from default runlevels ..."
80 rc-config del ${service} &> /dev/null
81
82 # do not stop services on bootstrap or MROOT!=/
83 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
84 then
85 # stop service if running
86 if [[ -n $(pidof ${service_exec}) ]]
87 then
88 killall -15 ${service_exec} &> /dev/null
89 sleep 1
90 killall -9 ${service_exec} &> /dev/null
91 fi
92 fi
93 }
94
95 # reloads a service if already running
96 # mreloadservice service {/path/to/service_exec}
97 mreloadservice()
98 {
99 local service="$1"
100 local service_exec="$2"
101
102 # only run if sysV init was found
103 if [[ ! -f /etc/rc.d/init.d/functions ]]
104 then
105 echo "sysV init not found, not adding service ${service} to runlevels!"
106 return
107 fi
108
109 # don't run if feature !autosvc was set
110 if mqueryfeature "!autosvc"
111 then
112 echo "!autosvc detected; auto management of services disabled."
113 return
114 fi
115
116 [[ -z ${service_exec} ]] && service_exec="$(which ${service})"
117
118 # do not stop services on bootstrap or MROOT!=/
119 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
120 then
121 # only reload the service if running
122 if [[ -n $(pidof ${service_exec}) ]]
123 then
124 /etc/init.d/${service} reload
125 fi
126 fi
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 local opts
136
137 # only run if systemd was found
138 if [[ ! -x /bin/systemctl ]] && [[ ! -x /usr/bin/systemctl ]]
139 then
140 echo "systemd not found, not adding unit ${service} to runlevels!"
141 return
142 fi
143
144 # don't run if feature !autosvc was set
145 if mqueryfeature "!autosvc"
146 then
147 echo "!autosvc detected; auto management of services disabled."
148 return
149 fi
150
151 if [[ ${MROOT} != / ]] && [[ ! -z ${MROOT} ]]
152 then
153 opts="--root ${MROOT}"
154 fi
155
156 if [[ -z ${service_exec} ]]
157 then
158 case ${service} in
159 *.service) service_exec="$(which ${service%%.service} 2> /dev/null)" ;;
160 *.socket) service_exec="$(which ${service%%.socket} 2> /dev/null)" ;;
161 *.mount) service_exec="$(which ${service%%.mount} 2> /dev/null)" ;;
162 *.target) service_exec="$(which ${service%%.target} 2> /dev/null)" ;;
163 *) service_exec="$(which ${service} 2> /dev/null)" ;;
164 esac
165 fi
166
167 # add service to default runlevels
168 echo -e " ${COLBLUE}[${COLGREEN}+${COLBLUE}]${COLDEFAULT} adding unit ${service} to default runlevels ..."
169 # reload daemon to honor changed unit files
170 systemctl ${opts} daemon-reload
171 systemctl ${opts} enable ${service}
172
173 # do not start services on bootstrap or MROOT!=/
174 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
175 then
176 echo -e " ${COLBLUE}[${COLGREEN}+${COLBLUE}]${COLDEFAULT} starting unit ${service} ..."
177 # start or restart the service
178 # dont use try-restart, works only with active services!
179 systemctl restart ${service}
180 fi
181 }
182
183 # removes systemd units from runlevels and stops them
184 # mstopunit service {/path/to/service_exec}
185 mstopunit()
186 {
187 local service="$1"
188 local service_exec="$2"
189 local opts
190
191 # only run if systemd was found
192 if [[ ! -x /bin/systemctl ]] && [[ ! -x /usr/bin/systemctl ]]
193 then
194 echo "systemd not found, not removing unit ${service} from runlevels!"
195 return
196 fi
197
198 # don't run if feature !autosvc was set
199 if mqueryfeature "!autosvc"
200 then
201 echo "!autosvc detected; auto management of services disabled."
202 return
203 fi
204
205 if [[ ${MROOT} != / ]] && [[ ! -z ${MROOT} ]]
206 then
207 opts="--root ${MROOT}"
208 fi
209
210 if [[ -z ${service_exec} ]]
211 then
212 case ${service} in
213 *.service) service_exec="$(which ${service%%.service} 2> /dev/null)" ;;
214 *.socket) service_exec="$(which ${service%%.socket} 2> /dev/null)" ;;
215 *.mount) service_exec="$(which ${service%%.mount} 2> /dev/null)" ;;
216 *.target) service_exec="$(which ${service%%.target} 2> /dev/null)" ;;
217 *) service_exec="$(which ${service} 2> /dev/null)" ;;
218 esac
219 elif [[ x$(basename ${service_exec}) = x${service_exec} ]]
220 then
221 # expand full path
222 service_exec="$(which ${service_exec})"
223 fi
224
225 # only stop the service if ${service_exec} does not exist
226 [[ -x ${MROOT}/${service_exec} ]] && return
227
228 # del services from runlevel regardless if they exist or not
229 echo -e " ${COLBLUE}[${COLRED}-${COLBLUE}]${COLDEFAULT} removing unit ${service} from default runlevels ..."
230 # reload daemon to honor changed unit files
231 systemctl ${opts} daemon-reload
232 systemctl ${opts} disable ${service}
233
234 # do not stop services on bootstrap or MROOT!=/
235 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
236 then
237 echo -e " ${COLBLUE}[${COLGREEN}+${COLBLUE}]${COLDEFAULT} stopping unit ${service} ..."
238 systemctl stop ${service}
239 # try harder
240 if [[ -n $(pidof ${service_exec}) ]]
241 then
242 killall -15 ${service_exec} &> /dev/null
243 sleep 1
244 killall -9 ${service_exec} &> /dev/null
245 fi
246 fi
247 }
248
249 # reloads a systemd unit if already running
250 # mreloadunit service {/path/to/service_exec}
251 mreloadunit()
252 {
253 local service="$1"
254 local service_exec="$2"
255 local opts
256
257 # only run if systemd was found
258 if [[ ! -x /bin/systemctl ]] && [[ ! -x /usr/bin/systemctl ]]
259 then
260 echo "systemd not found, not removing unit ${service} from runlevels!"
261 return
262 fi
263
264 # don't run if feature !autosvc was set
265 if mqueryfeature "!autosvc"
266 then
267 echo "!autosvc detected; auto management of services disabled."
268 return
269 fi
270
271 if [[ ${MROOT} != / ]] && [[ ! -z ${MROOT} ]]
272 then
273 opts="--root ${MROOT}"
274 fi
275
276 if [[ -z ${service_exec} ]]
277 then
278 case ${service} in
279 *.service) service_exec="$(which ${service%%.service} 2> /dev/null)" ;;
280 *.socket) service_exec="$(which ${service%%.socket} 2> /dev/null)" ;;
281 *.mount) service_exec="$(which ${service%%.mount} 2> /dev/null)" ;;
282 *.target) service_exec="$(which ${service%%.target} 2> /dev/null)" ;;
283 *) service_exec="$(which ${service} 2> /dev/null)" ;;
284 esac
285 fi
286
287 # reload daemon to honor changed unit files
288 systemctl ${opts} daemon-reload
289
290 # do not stop services on bootstrap or MROOT!=/
291 if [[ ${MAGE_BOOTSTRAP} != true ]] && [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
292 then
293 # only reload the service if running
294 systemctl reload-or-try-restart ${service}
295 fi
296 }