Magellan Linux

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

Parent Directory Parent Directory | Revision Log 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)
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 *