Annotation of /alx-src/trunk/alx-config/init.d/functions
Parent Directory | Revision Log
Revision 217 -
(hide annotations)
(download)
Sat Mar 5 17:08:18 2005 UTC (19 years, 6 months ago) by niro
File size: 4280 byte(s)
Sat Mar 5 17:08:18 2005 UTC (19 years, 6 months ago) by niro
File size: 4280 byte(s)
test; not ready for public
1 | niro | 217 | #!/bin/bash |
2 | # Begin $rc_base/init.d/functions - Run Level Control Functions | ||
3 | |||
4 | # Based on functions script from LFS-3.1 and earlier. | ||
5 | # Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org | ||
6 | |||
7 | # With code based on Matthias Benkmann's simpleinit-msb @ | ||
8 | # http://winterdrache.de/linux/newboot/index.html | ||
9 | |||
10 | umask 022 | ||
11 | |||
12 | export PATH="/bin:/usr/bin:/sbin:/usr/sbin" | ||
13 | |||
14 | KILLDELAY=3 | ||
15 | |||
16 | COLUMNS=$(stty size) | ||
17 | COLUMNS=${COLUMNS##* } | ||
18 | COL=$[ $COLUMNS - 10 ] | ||
19 | WCOL=$[ $COLUMNS - 30 ] | ||
20 | WWCOL=$[ $COLUMNS - 40 ] | ||
21 | SET_COL="echo -en \\033[${COL}G" | ||
22 | SET_WCOL="echo -en \\033[${WCOL}G" | ||
23 | SET_WWCOL="echo -en \\033[${WWCOL}G" | ||
24 | CURS_UP="echo -en \\033[A" | ||
25 | |||
26 | NORMAL="echo -en \\033[0;39m" | ||
27 | SUCCESS="echo -en \\033[1;32m" | ||
28 | WARNING="echo -en \\033[1;33m" | ||
29 | FAILURE="echo -en \\033[1;31m" | ||
30 | |||
31 | COLRED="\033[1;6m\033[31m" | ||
32 | COLGREEN="\033[1;6m\033[32m" | ||
33 | COLYELLOW="\033[1;6m\033[33m" | ||
34 | COLBLUE="\033[1;6m\033[34m" | ||
35 | COLMAGENTA="\033[1;6m\033[35m" | ||
36 | COLWHITE="\033[1;6m\033[37m" | ||
37 | COLDEFAULT="\033[0m" | ||
38 | |||
39 | COLOREDSTAR="${COLBLUE}(${COLGREEN}*${COLBLUE})${COLDEFAULT} " | ||
40 | |||
41 | print_error_msg() | ||
42 | { | ||
43 | return 0 | ||
44 | |||
45 | echo | ||
46 | $FAILURE | ||
47 | echo -e " An Error occurred." | ||
48 | echo -e " Script: ${COLWHITE}$i${COLRED}" | ||
49 | echo -e " Exitcode: ${COLWHITE}$error_value${COLRED}" | ||
50 | echo | ||
51 | $NORMAL | ||
52 | echo | ||
53 | echo "Press Enter to continue..." | ||
54 | read | ||
55 | } | ||
56 | |||
57 | check_script_status() | ||
58 | { | ||
59 | if [ ! -f $i ] | ||
60 | then | ||
61 | echo "$i is not a valid symlink" | ||
62 | continue | ||
63 | fi | ||
64 | |||
65 | if [ ! -x $i ] | ||
66 | then | ||
67 | echo "$i is not executable, skipping" | ||
68 | continue | ||
69 | fi | ||
70 | } | ||
71 | |||
72 | evaluate_retval() | ||
73 | { | ||
74 | error_value=$? | ||
75 | |||
76 | if [ $error_value = 0 ] | ||
77 | then | ||
78 | print_status success | ||
79 | else | ||
80 | print_status failure | ||
81 | fi | ||
82 | |||
83 | return $error_value | ||
84 | } | ||
85 | |||
86 | print_status() | ||
87 | { | ||
88 | if [ $# = 0 ] | ||
89 | then | ||
90 | echo "Usage: $0 {success|warning|failure}" | ||
91 | return 1 | ||
92 | fi | ||
93 | |||
94 | $CURS_UP | ||
95 | |||
96 | case "$1" in | ||
97 | success) | ||
98 | $SET_COL | ||
99 | echo -e -n $COLBLUE"[ " | ||
100 | $SUCCESS | ||
101 | echo -e -n "OK" | ||
102 | echo -e $COLBLUE" ]" | ||
103 | $NORMAL | ||
104 | ;; | ||
105 | warning) | ||
106 | case "$2" in | ||
107 | running) | ||
108 | $SET_WCOL | ||
109 | echo "Already running" | ||
110 | $CURS_UP | ||
111 | ;; | ||
112 | not_running) | ||
113 | $SET_WCOL | ||
114 | echo "Not running" | ||
115 | $CURS_UP | ||
116 | ;; | ||
117 | esac | ||
118 | $SET_COL | ||
119 | echo -e -n $COLBLUE"[ " | ||
120 | $WARNING | ||
121 | echo -e -n "ATTN" | ||
122 | echo -e $COLBLUE" ]" | ||
123 | $NORMAL | ||
124 | ;; | ||
125 | failure) | ||
126 | $SET_COL | ||
127 | echo -e -n $COLBLUE"[" | ||
128 | $FAILURE | ||
129 | echo -e -n "FAILED" | ||
130 | echo -e $COLBLUE"]" | ||
131 | $NORMAL | ||
132 | ;; | ||
133 | esac | ||
134 | } | ||
135 | |||
136 | getpids() | ||
137 | { | ||
138 | base=${1##*/} | ||
139 | pidlist=$(pidof -o $$ -o $PPID -x $base) | ||
140 | } | ||
141 | |||
142 | loadproc() | ||
143 | { | ||
144 | if [ $# = 0 ] | ||
145 | then | ||
146 | echo "Usage: loadproc {program}" | ||
147 | exit 1 | ||
148 | fi | ||
149 | |||
150 | getpids $1 | ||
151 | |||
152 | if [ -z "$pidlist" ] | ||
153 | then | ||
154 | "$@" | ||
155 | evaluate_retval | ||
156 | else | ||
157 | $SET_WCOL | ||
158 | print_status warning running | ||
159 | fi | ||
160 | } | ||
161 | |||
162 | killproc() | ||
163 | { | ||
164 | if [ $# = 0 ] | ||
165 | then | ||
166 | echo "Usage: killproc {program} [signal]" | ||
167 | exit 1 | ||
168 | fi | ||
169 | |||
170 | if [ -z "$2" ]; then | ||
171 | signal=TERM | ||
172 | fallback=KILL | ||
173 | else | ||
174 | signal=${2##-} | ||
175 | signal=${signal##SIG} | ||
176 | fallback="" | ||
177 | fi | ||
178 | |||
179 | getpids $1 | ||
180 | |||
181 | if [ -n "$pidlist" ]; then | ||
182 | failure=0 | ||
183 | |||
184 | for pid in $pidlist | ||
185 | do | ||
186 | kill -$signal $pid 2>/dev/null | ||
187 | |||
188 | for ((i=0; $i<5000; i=$i+1)); do :; done | ||
189 | |||
190 | for ((i=0; $i<$KILLDELAY; i=$i+1)); do | ||
191 | kill -0 $pid 2>/dev/null || break | ||
192 | sleep 1 | ||
193 | done | ||
194 | |||
195 | if [ -n "$fallback" ]; then kill -$fallback $pid 2>/dev/null; fi | ||
196 | |||
197 | kill -0 $pid 2>/dev/null && failure=1 | ||
198 | done | ||
199 | |||
200 | base=${1##*/} | ||
201 | if [ $failure = 0 ]; then rm -f /var/run/$base.pid; fi | ||
202 | |||
203 | (exit $failure) | ||
204 | evaluate_retval | ||
205 | else | ||
206 | $SET_WCOL | ||
207 | print_status warning not_running | ||
208 | fi | ||
209 | } | ||
210 | |||
211 | reloadproc() | ||
212 | { | ||
213 | if [ $# = 0 ] | ||
214 | then | ||
215 | echo "Usage: reloadproc {program} [signal]" | ||
216 | exit 1 | ||
217 | fi | ||
218 | |||
219 | if [ -z "$2" ]; then | ||
220 | signal=HUP | ||
221 | else | ||
222 | signal=${2##-} | ||
223 | signal=${signal##SIG} | ||
224 | |||
225 | fi | ||
226 | |||
227 | getpids $1 | ||
228 | |||
229 | if [ -n "$pidlist" ] | ||
230 | then | ||
231 | failure=0 | ||
232 | |||
233 | for pid in $pidlist | ||
234 | do | ||
235 | kill -$signal $pid || failure=1 | ||
236 | done | ||
237 | |||
238 | (exit $failure) | ||
239 | evaluate_retval | ||
240 | else | ||
241 | $SET_WCOL | ||
242 | print_status warning not_running | ||
243 | fi | ||
244 | } | ||
245 | |||
246 | statusproc() | ||
247 | { | ||
248 | if [ $# = 0 ] | ||
249 | then | ||
250 | echo "Usage: statusproc {program}" | ||
251 | exit 1 | ||
252 | fi | ||
253 | |||
254 | base=${1##*/} | ||
255 | getpids $base | ||
256 | |||
257 | if [ -n "$pidlist" ] | ||
258 | then | ||
259 | echo "$base is running with Process ID(s) $pidlist" | ||
260 | else | ||
261 | if [ -s /var/run/$base.pid ] | ||
262 | then | ||
263 | echo "$1 is not running but /var/run/$base.pid exists" | ||
264 | return 1 | ||
265 | else | ||
266 | echo "$1 is not running" | ||
267 | fi | ||
268 | fi | ||
269 | } | ||
270 | |||
271 | progressbar() | ||
272 | { | ||
273 | if [ $# != 1 ] | ||
274 | then | ||
275 | echo "Usage: progressbar {progress}" | ||
276 | exit 1 | ||
277 | fi | ||
278 | |||
279 | if [ -f /proc/splash ] | ||
280 | then | ||
281 | echo "show $(( 65534 * $1 / 100 ))" > /proc/splash | ||
282 | fi | ||
283 | } | ||
284 | |||
285 | # End $rc_base/init.d/functions |
Properties
Name | Value |
---|---|
svn:executable | * |