]> git.pld-linux.org Git - projects/rc-scripts.git/blame - rc.d/init.d/functions
- added template .cvsignore.
[projects/rc-scripts.git] / rc.d / init.d / functions
CommitLineData
7742e157
AF
1#!/bin/bash
2#
3# functions This file contains functions to be used by most or all
4# shell scripts in the /etc/init.d directory.
5#
6# Version: @(#) /etc/init.d/functions 1.01 26-Oct-1993
7#
8# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
9# Hacked by: Greg Galloway and Marc Ewing
10# Modified for PLD by Marek Obuchowicz <elephant@shadow.eu.org>
11#
12
13# First set up a default search path.
14export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
15
16# Some functions to handle PLD-style messages
17function show() {
18 text="$*".............................................
19 echo -ne `echo $text | cut -c1-45`
20}
21
22function busy() {
23 echo -ne '\e[0;36m[\e[0;35m BUSY \e[0;36m]\e[0;37m'
24}
25
26function ok() {
27 echo -e '\e[0;36m[\e[0;32m DONE \e[0;36m]\e[0;37m'
28}
29
30function fail() {
31 echo -e '\e[0;36m[\e[0;31m FAIL \e[0;36m]\e[0;37m'
32}
33
34function died() {
35 echo -e '\e[0;36m[\e[0;31m DIED \e[0;36m]\e[0;37m'
36}
37
38function deltext() {
39 echo -ne '\b\b\b\b\b\b\b\b'
40}
41
42# A function to start a program.
43daemon() {
44 TMPFILE=`mktemp /tmp/init-XXXXXX`
45
46 nicelevel=0
47 # Test syntax.
48 case $1 in
49 '') echo '$0: Usage: daemon [+/-nicelevel] {program}'
50 return 1;;
51 -*|+*) nicelevel=$1
52 shift;;
53 esac
54
55 # make sure it doesn't core dump anywhere; while this could mask
56 # problems with the daemon, it also closes some security problems
57 ulimit -c 0
58
59 # And start it up.
60 busy
61 if nice -n $nicelevel "$@" &> $TMPFILE; then
62 deltext
63 ok
64 else
65 deltext
66 fail
67 cat $TMPFILE
68 fi
69 rm -f $TMPFILE
70}
71
72# A function to stop a program.
73killproc() {
74 # Test syntax.
75 if [ $# = 0 ]; then
76 echo "Usage: killproc {program} [signal]"
77 return 1
78 fi
79
80 busy
81
82 TMPFILE=`mktemp /tmp/init-XXXXXX`
83
84 notset=0
85 # check for second arg to be kill level
86 if [ "$2" != "" ] ; then
87 killlevel=$2
88 else
89 notset=1
90 killlevel="-9"
91 fi
92
93 # Save basename.
94 base=`basename $1`
95
96 # Find pid.
97 pid=`pidofproc $base`
98
99 # Kill it.
100 if [ "$pid" != "" ] ; then
101 if [ "$notset" = 1 ] ; then
102 # TERM first, then KILL if not dead
103 kill -TERM $pid &> $TMPFILE
104 usleep 100000
105 dead=`ps aux | awk '{print $2}' | grep $pid`
106 if [ "$dead" != "" ]; then
107 sleep 3
108 kill -KILL $pid &> $TMPFILE
109 fi
110 # use specified level only
111 else
112 kill $killlevel $pid &> $TMPFILE
113 fi
114 else
115 rm -f /var/run/$base.pid
116 deltext
117 fail
118 return
119 fi
120
121 # Remove pid file if any.
122 rm -f /var/run/$base.pid
123
124 if [ -z "`cat $TMPFILE`" ]; then
125 deltext
126 ok
127 else
128 deltext
129 died
130 fi
131 rm -f $TMPFILE
132}
133
134# A function to find the pid of a program.
135pidofproc() {
136 # Test syntax.
137 if [ $# = 0 ] ; then
138 echo "Usage: pidofproc {program}"
139 return 1
140 fi
141
142 # First try "/var/run/*.pid" files
143 if [ -f /var/run/$1.pid ] ; then
144 pid=`head -1 /var/run/$1.pid`
145 if [ "$pid" != "" ] ; then
146 echo $pid
147 return 0
148 fi
149 fi
150
151 # Next try "pidof"
152 pid=`pidof $1`
153 if [ "$pid" != "" ] ; then
154 echo $pid
155 return 0
156 fi
157
158 # Finally try to extract it from ps
159 ps auxw | awk 'BEGIN { prog=ARGV[1]; ARGC=1 }
160 { if ((prog == $11) || (("(" prog ")") == $11) ||
161 ((prog ":") == $11)) { print $2 } }' $1
162}
163status() {
164 # Test syntax.
165 if [ $# = 0 ] ; then
166 echo "Usage: status {program}"
167 return 1
168 fi
169
170 # First try "pidof"
171 pid=`pidof $1`
172 if [ "$pid" != "" ] ; then
173 echo "$1 (pid $pid) is running..."
174 return 0
175 else
176 pid=`ps auxww | grep $1 | egrep -v grep\|$0 | awk '{print $2}'`
177 if [ "$pid" != "" ] ; then
178 echo "$1 (pid $pid) is running..."
179 return 0
180 fi
181 fi
182
183 # Next try "/var/run/*.pid" files
184 if [ -f /var/run/$1.pid ] ; then
185 pid=`head -1 /var/run/$1.pid`
186 if [ "$pid" != "" ] ; then
187 echo "$1 dead but pid file exists"
188 return 1
189 fi
190 fi
191 # See if /var/lock/subsys/$1 exists
192 if [ -f /var/lock/subsys/$1 ]; then
193 echo "$1 dead but subsys locked"
194 return 2
195 fi
196 echo "$1 is stopped"
197 return 3
198}
This page took 0.056283 seconds and 4 git commands to generate.