blob: 7e42deb1969b947aefe57c091d2dab252e3bf027 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#! /bin/sh
#
# functions This file contains functions to be used by most or all
# shell scripts in the /etc/init.d directory.
#
# Version: @(#) /etc/init.d/functions 1.01 26-Oct-1993
#
# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Hacked by: Greg Galloway and Marc Ewing
#
# First set up a default search path.
export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
# A function to start a program.
daemon() {
# Test syntax.
if [ $# = 0 ]; then
echo "Usage: daemon {program}"
return 1
fi
# Save basename.
base=`basename $1`
# See if it's already running.
[ "`pidofproc $base`" != "" ] && return
# echo basename of the program.
echo -n "$base "
# And start it up.
$*
}
# A function to stop a program.
killproc() {
# Test syntax.
if [ $# = 0 ]; then
echo "Usage: killproc {program} [signal]"
return 1
fi
notset=0
# check for second arg to be kill level
if [ "$2" != "" ] ; then
killlevel=$2
else
notset=1
killlevel="-9"
fi
# Save basename.
base=`basename $1`
# Find pid.
pid=`pidofproc $base`
# Kill it.
if [ "$pid" != "" ] ; then
echo -n "$base "
if [ "$notset" = 1 ] ; then
# TERM first, then KILL if not dead
kill -TERM $pid
usleep 100000
dead=`ps aux | awk '{print $2}' | grep $pid`
if [ "$dead" != "" ]; then
sleep 3
kill -KILL $pid
fi
# use specified level only
else
kill $killlevel $pid
fi
fi
# Remove pid file if any.
rm -f /var/run/$base.pid
}
# A function to find the pid of a program.
pidofproc() {
# Test syntax.
if [ $# = 0 ] ; then
echo "Usage: pidofproc {program}"
return 1
fi
# First try "/var/run/*.pid" files
if [ -f /var/run/$1.pid ] ; then
pid=`head -1 /var/run/$1.pid`
if [ "$pid" != "" ] ; then
echo $pid
return 0
fi
fi
# Next try "pidof"
pid=`pidof $1`
if [ "$pid" != "" ] ; then
echo $pid
return 0
fi
# Finally try to extract it from ps
ps auxw | awk 'BEGIN { prog=ARGV[1]; ARGC=1 }
{ if ((prog == $11) || (("(" prog ")") == $11) ||
((prog ":") == $11)) { print $2 } }' $1
}
status() {
# Test syntax.
if [ $# = 0 ] ; then
echo "Usage: status {program}"
return 1
fi
# First try "pidof"
pid=`pidof $1`
if [ "$pid" != "" ] ; then
echo "$1 (pid $pid) is running..."
return 0
else
pid=`ps auxww | grep $1 | egrep -v grep\|$0 | awk '{print $2}'`
if [ "$pid" != "" ] ; then
echo "$1 (pid $pid) is running..."
return 0
fi
fi
# Next try "/var/run/*.pid" files
if [ -f /var/run/$1.pid ] ; then
pid=`head -1 /var/run/$1.pid`
if [ "$pid" != "" ] ; then
echo "$1 dead but pid file exists"
return 1
fi
fi
# See if /var/lock/subsys/$1 exists
if [ -f /var/lock/subsys/$1 ]; then
echo "$1 dead but subsys locked"
return 2
fi
echo "$1 is stopped"
return 3
}
|