-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathred5_daemon.sh
156 lines (145 loc) · 3.5 KB
/
red5_daemon.sh
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
146
147
148
149
150
151
152
153
154
155
156
#!/bin/bash
#**********************************************************************************************************************
# red5 This shell script takes care of starting and stopping red5
#
# chkconfig: 2345 85 85
#
### BEGIN INIT INFO
# Provides: red5
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Short-Description: Start red5 daemon at boot time
# Description: start, stop and restart red5.
### END INIT INFO
#
# Created By: Arul - [email protected]
# Update history:
# v0.1 - 30-Aug-2014 - First release
#**********************************************************************************************************************
# Give your red5 installed path here
export RED5_HOME=/usr/share/red5
PROCESS_ID=0
PROG="red5"
PIDFILE=/var/run/$PROG.pid
# Returns 0 if the process with PID $1 is running.
function checkProcessIsRunning {
local PROCESS_ID="$1"
if [ -z "$PROCESS_ID" -o "$PROCESS_ID" == "" ]; then
return 1;
fi
if [ ! -e /proc/$PROCESS_ID ]; then
return 1;
fi
return 0;
}
# Returns 0 if the process with PID $1 is our Java service process.
function checkProcessIsOurService {
local PROCESS_ID="$1"
if [ "$(ps -p $PROCESS_ID --no-headers -o comm)" != "java" ]; then
return 1;
fi
grep -q --binary -F "$PROG" /proc/$PROCESS_ID/cmdline
if [ $? -ne 0 ]; then
return 1;
fi
return 0;
}
# Returns 0 when the service is running and sets the variable $PROCESS_ID to the PID.
function getServicePID {
if [ ! -f $PIDFILE ]; then
return 1;
fi
PROCESS_ID="$(<$PIDFILE)"
checkProcessIsRunning $PROCESS_ID || return 1
checkProcessIsOurService $PROCESS_ID || return 1
return 0;
}
function start() {
echo $"Starting $PROG..."
getServicePID
if [ $? -eq 0 ]; then
echo "$PROG is already running in PID=$PROCESS_ID";
RETVAL=0;
return 0;
fi
$RED5_HOME/red5.sh 1 > $RED5_HOME/log/stdout.log 2 > $RED5_HOME/log/stderr.log &
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo $! > $PIDFILE
touch /var/lock/subsys/$PROG
PROCESS_ID="$(<$PIDFILE)"
fi
sleep 0.1
checkProcessIsRunning $PROCESS_ID
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "started PID="$PROCESS_ID
else
echo "$PROG start failed, see logfile."
fi
return $RETVAL
}
function stop() {
getServicePID
if [ $? -ne 0 ]; then
echo "$PROG is not running";
RETVAL=0;
echo "";
return 0;
fi
echo $"Stopping $PROG..."
$RED5_HOME/red5-shutdown.sh
RETVAL=$?
sleep 0.1
checkProcessIsRunning $PROCESS_ID
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
rm -f /var/lock/subsys/$PROG
echo "stopped PID=$PROCESS_ID"
else
echo "$PROG stop failed, see logfile."
fi
return $RETVAL
}
function restart() {
stop
sleep 0.1
start
}
function status() {
echo -n "Checking for $PROG:"
if getServicePID; then
echo "running PID=$PROCESS_ID"
RETVAL=0
else
echo "stopped"
RETVAL=3
fi
return 0;
}
# How its called.
function main() {
RETVAL=0
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit $RETVAL
}
main $1