Magellan Linux

Contents of /alx-src/trunk/alx-config/init.d/functions

Parent Directory Parent Directory | Revision Log Revision Log


Revision 217 - (show annotations) (download)
Sat Mar 5 17:08:18 2005 UTC (19 years, 1 month 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 *