blob: 1f7b05070364fae40787ce3df6e69be6c39a9a61 (
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
|
#!/bin/bash
#
# An attempt at a simple, distribution-independent daemon management.
#
# Copyright (C) 2000-2001 Mission Critical Linux, Inc.
#
# daemon functions
getpid()
{
pid=''
if [ -f /var/run/${base}.pid ]
then
pid=`head -1 /var/run/${base}.pid`
fi
if [ "$pid" = "" ]
then
pid=`pidof $1`
fi
if [ "$pid" = "" ]
then
pid=`ps ax | awk 'BEGIN { prog=ARGV[1]; ARGC=1 }
{ if ((prog == $5) || (("(" prog ")") == $5) ||
(("[" prog "]") == $5) ||
((prog ":") == $5)) { print $1 ; exit 0 } }' $1`
fi
echo $pid
}
startdaemon()
{
base=`basename $1`
# check if it is already running
pid=`getpid $base`
[ -n "$pid" ] && ps h $pid >/dev/null 2>&1 && echo " already running." && return
# don't dump core
ulimit -c 0
$* && echo " done." || echo " failed."
}
stopdaemon()
{
base=`basename $1`
pid=`getpid $base`
if [ "$pid" != "" ]
then
if ps h $pid>/dev/null 2>&1
then
kill -TERM $pid
if ps h $pid>/dev/null 2>&1
then
sleep 1
if ps h $pid>/dev/null 2>&1
then
sleep 3
if ps h $pid>/dev/null 2>&1
then
kill -KILL $pid
sleep 2
fi
fi
fi
fi
ps h $pid >/dev/null 2>&1
RC=$?
[ $RC -eq 0 ] && echo " failed." || echo " done."
[ $RC -eq 0 ] || rm -f /var/run/$base.pid >/dev/null 2>&1
else
echo " not running."
fi
}
daemonstatus()
{
base=`basename $1`
pid=`getpid $base`
if [ "$pid" != "" ]
then
if ps h $pid >/dev/null 2>&1
then
echo "$base (pid $pid) is running."
return 0
else
if [ -f /var/run/${base}.pid ]
then
echo "$base dead but pid file exists."
return 1
else
echo "$base is stopped."
return 2
fi
fi
else
echo "$base is stopped."
return 3
fi
}
|