1 |
#! /bin/sh |
#! /bin/bash |
|
# |
|
|
# smsdaemon Startup script for the SMS daemon |
|
|
# |
|
|
|
|
|
### BEGIN INIT INFO |
|
|
# Provides: smsdaemon |
|
|
# Required-Start: $syslog |
|
|
# Required-Stop: $syslog |
|
|
# Should-Start: $local_fs |
|
|
# Should-Stop: $local_fs |
|
|
# Default-Start: 2 3 4 5 |
|
|
# Default-Stop: 0 1 6 |
|
|
# Short-Description: starts smsdaemon |
|
|
### END INIT INFO |
|
|
|
|
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin |
|
|
DAEMON=/usr/local/sbin/smsdaemon |
|
|
NAME=smsdaemon |
|
|
PACKAGE=smsdaemon |
|
|
DESC='SMS Daemon' |
|
2 |
|
|
3 |
PIDFILE="/var/run/smsdaemon.pid" |
PIDFILE="/var/run/smsdaemon.pid" |
4 |
|
|
5 |
|
function start_d |
6 |
|
{ |
7 |
test -x $DAEMON || exit 0 |
/usr/local/sbin/smsdaemon --daemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
start () { |
|
|
|
|
|
if ! ps -C smsdaemon > /dev/null 2>&1 ; then |
|
|
|
|
|
if [ -f $PIDFILE ]; then |
|
|
rm $PIDFILE |
|
|
fi |
|
|
fi |
|
|
|
|
|
#make sure we have the directories and access where needed |
|
|
if [ ! -d $(dirname $PIDFILE) ]; then |
|
|
install -d -o $USER -g $GROUP -m 755 $(dirname $PIDFILE) |
|
|
else |
|
|
chown -R $USER:$GROUP $(dirname $PIDFILE) |
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
# Start the daemon |
|
|
ARGS="--daemon" |
|
|
if start-stop-daemon -q --start --background -p $PIDFILE --exec $DAEMON -- $ARGS ; then |
|
|
echo "$NAME." |
|
|
else |
|
|
echo "$NAME already running." |
|
|
fi |
|
|
|
|
|
sleep 1 |
|
8 |
} |
} |
9 |
|
|
10 |
forcestop () |
function stop_d |
11 |
{ |
{ |
12 |
if [ -f $PIDFILE ]; then |
if [ -f $PIDFILE ] ; then |
13 |
PID=`cat $PIDFILE 2>/dev/null` |
PID=`cat $PIDFILE` |
14 |
fi |
LINES=`ps aux | grep smsdaemon | grep $PID | wc -l` |
15 |
|
if [ "$LINES" == "1" ] ; then |
16 |
if ! kill -0 $PID 2>/dev/null 2>/dev/null; then |
kill $PID |
|
echo "$NAME not running." |
|
|
else |
|
|
kill -9 $PID |
|
|
if [ -f $PIDFILE ]; then |
|
|
rm $PIDFILE |
|
|
fi |
|
|
|
|
|
if kill -0 $PID 2>/dev/null 2>/dev/null; then |
|
|
echo "Failed." |
|
17 |
else |
else |
18 |
echo "$NAME." |
echo "pidfile found -- but smsdaemon not running" |
19 |
fi |
fi |
20 |
fi |
else |
21 |
|
echo "PIDFILE not found !!!!!!!!" |
22 |
|
fi |
23 |
} |
} |
24 |
|
|
25 |
status() |
function status_d |
26 |
{ |
{ |
27 |
if [ ! -f $PIDFILE ]; then |
if [ -f $PIDFILE ] ; then |
28 |
return 1; |
PID=`cat $PIDFILE` |
29 |
fi |
LINES=`ps aux | grep smsdaemon | grep $PID | wc -l` |
30 |
|
if [ "$LINES" == "1" ] ; then |
31 |
start-stop-daemon --start --quiet -p $PIDFILE --exec $DAEMON --test > /dev/null |
echo "smsdaemon running (pid=$PID)" |
32 |
if [ "$?" = '0' ]; then |
else |
33 |
return 1 # Daemon is not running |
echo "pidfile found -- but smsdaemon not running" |
|
else |
|
|
return 0 # Daemon is running |
|
|
fi |
|
|
} |
|
|
|
|
|
stop () { |
|
|
|
|
|
restartmode="0" |
|
|
|
|
|
if [ "$1" = 'restart' ]; then |
|
|
restartmode=1 |
|
|
fi |
|
|
|
|
|
if [ -f $PIDFILE ]; then |
|
|
PID=`cat $PIDFILE 2>/dev/null` |
|
|
fi |
|
|
|
|
|
if ! kill -0 $PID 2>/dev/null 2>/dev/null; then |
|
|
echo "$NAME not running." |
|
|
|
|
|
if [ "$restartmode" -lt 1 ] |
|
|
then |
|
|
return 0 |
|
34 |
fi |
fi |
35 |
fi |
else |
36 |
|
echo "no pidfile - smsdaemon not started" |
|
infofound=0 |
|
|
maxwait=15 |
|
|
|
|
|
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON |
|
|
|
|
|
# |
|
|
# Now we have to wait until smsd has _really_ stopped |
|
|
# |
|
|
sleep 1 |
|
|
|
|
|
if test -n "$PID" && kill -0 $PID 2>/dev/null |
|
|
then |
|
|
echo -n "(waiting..." |
|
|
|
|
|
seconds=0 |
|
|
while kill -0 $PID 2>/dev/null |
|
|
do |
|
|
if [ $infofound -lt 1 ]; then |
|
|
if [ -f $INFOFILE ]; then |
|
|
infofound=1 |
|
|
fi |
|
|
fi |
|
|
|
|
|
if [ $infofound -lt 1 ]; then |
|
|
seconds=`expr $seconds + 1` |
|
|
fi |
|
|
|
|
|
if [ $seconds -ge $maxwait ]; then |
|
|
echo -n "failed)" |
|
|
echo -n "Timeout occured, killing smsd hardly." |
|
|
|
|
|
kill -9 $PID |
|
|
if [ -f $PIDFILE ]; then |
|
|
rm $PIDFILE |
|
|
fi |
|
|
|
|
|
echo "" |
|
|
exit 0 |
|
|
fi |
|
|
|
|
|
sleep 1 |
|
|
done |
|
|
|
|
|
echo -n "done)" |
|
|
fi |
|
|
|
|
|
if [ "$restartmode" -lt 1 ]; then |
|
|
echo "$NAME." |
|
37 |
fi |
fi |
38 |
} |
} |
39 |
|
|
40 |
case "$1" in |
case $1 in |
41 |
start) |
"start") |
42 |
echo -n "Starting $DESC: " |
start_d |
43 |
start |
;; |
44 |
;; |
"stop") |
45 |
|
stop_d |
46 |
stop) |
;; |
47 |
echo -n "Stopping $DESC: " |
"status") |
48 |
stop |
status_d |
49 |
;; |
;; |
|
|
|
|
status) |
|
|
echo -n "Status of $DESC: " |
|
|
status |
|
|
case "$?" in |
|
|
0) |
|
|
echo "$NAME is running." |
|
|
;; |
|
|
1) |
|
|
echo "$NAME is not running." |
|
|
;; |
|
|
esac |
|
|
;; |
|
|
force-stop) |
|
|
echo -n "Forcing stop of $DESC: " |
|
|
force-stop |
|
|
echo "$NAME." |
|
|
|
|
|
;; |
|
|
|
|
|
restart|reload|force-reload) |
|
|
echo -n "Restarting $DESC: " |
|
|
stop restart |
|
|
start |
|
|
;; |
|
|
|
|
50 |
*) |
*) |
51 |
echo "Usage: /etc/init.d/$NAME {start|stop|force-stop|reload|force-reload|restart|status}" |
echo "Usage $0 [start|stop|status]" |
52 |
exit 3 |
;; |
|
;; |
|
53 |
esac |
esac |
|
|
|
|
exit 0 |
|