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