Contents of /alx-src/trunk/alx-config/init.d/functions
Parent Directory | Revision Log
Revision 217 -
(show 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 | #!/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 | * |