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 |
|
chmod 666 /dev/ttyUSB0 |
5 |
|
|
6 |
|
|
7 |
|
function start_d |
8 |
|
{ |
9 |
|
/usr/local/bin/smsdaemon --daemon |
10 |
|
} |
11 |
|
|
12 |
test -x $DAEMON || exit 0 |
function stop_d |
13 |
|
{ |
14 |
|
if [ -f $PIDFILE ] ; then |
15 |
|
PID=`cat $PIDFILE` |
16 |
|
LINES=`ps aux | grep smsdaemon | grep $PID | wc -l` |
17 |
start () { |
if [ "$LINES" == "1" ] ; then |
18 |
|
kill $PID |
19 |
if ! ps -C smsdaemon > /dev/null 2>&1 ; then |
else |
20 |
|
echo "pidfile found -- but smsdaemon not running" |
|
if [ -f $PIDFILE ]; then |
|
|
rm $PIDFILE |
|
21 |
fi |
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) |
|
22 |
else |
else |
23 |
chown -R $USER:$GROUP $(dirname $PIDFILE) |
echo "PIDFILE not found !!!!!!!!" |
24 |
fi |
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 |
|
25 |
} |
} |
26 |
|
|
27 |
forcestop () |
function status_d |
28 |
{ |
{ |
29 |
if [ -f $PIDFILE ]; then |
if [ -f $PIDFILE ] ; then |
30 |
PID=`cat $PIDFILE 2>/dev/null` |
PID=`cat $PIDFILE` |
31 |
fi |
LINES=`ps aux | grep smsdaemon | grep $PID | wc -l` |
32 |
|
if [ "$LINES" == "1" ] ; then |
33 |
if ! kill -0 $PID 2>/dev/null 2>/dev/null; then |
echo "smsdaemon running (pid=$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." |
|
34 |
else |
else |
35 |
echo "$NAME." |
echo "pidfile found -- but smsdaemon not running" |
36 |
fi |
fi |
37 |
|
else |
38 |
|
echo "no pidfile - smsdaemon not started" |
39 |
fi |
fi |
40 |
} |
} |
41 |
|
|
42 |
status() |
function reload_d |
43 |
{ |
{ |
44 |
if [ ! -f $PIDFILE ]; then |
PID=`cat $PIDFILE` |
45 |
return 1; |
kill -HUP $PID |
|
fi |
|
|
|
|
|
start-stop-daemon --start --quiet -p $PIDFILE --exec $DAEMON --test > /dev/null |
|
|
if [ "$?" = '0' ]; then |
|
|
return 1 # Daemon is not running |
|
|
else |
|
|
return 0 # Daemon is running |
|
|
fi |
|
46 |
} |
} |
47 |
|
|
48 |
stop () { |
case $1 in |
49 |
|
"start") |
50 |
restartmode="0" |
start_d |
51 |
|
;; |
52 |
if [ "$1" = 'restart' ]; then |
"stop") |
53 |
restartmode=1 |
stop_d |
54 |
fi |
;; |
55 |
|
"status") |
56 |
if [ -f $PIDFILE ]; then |
status_d |
57 |
PID=`cat $PIDFILE 2>/dev/null` |
;; |
58 |
fi |
"reload") |
59 |
|
reload_d |
60 |
if ! kill -0 $PID 2>/dev/null 2>/dev/null; then |
;; |
61 |
echo "$NAME not running." |
"restart") |
62 |
|
stop_d |
63 |
if [ "$restartmode" -lt 1 ] |
sleep 5 |
64 |
then |
start_d |
65 |
return 0 |
;; |
|
fi |
|
|
fi |
|
|
|
|
|
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." |
|
|
fi |
|
|
} |
|
|
|
|
|
case "$1" in |
|
|
start) |
|
|
echo -n "Starting $DESC: " |
|
|
start |
|
|
;; |
|
|
|
|
|
stop) |
|
|
echo -n "Stopping $DESC: " |
|
|
stop |
|
|
;; |
|
|
|
|
|
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 |
|
|
;; |
|
|
|
|
66 |
*) |
*) |
67 |
echo "Usage: /etc/init.d/$NAME {start|stop|force-stop|reload|force-reload|restart|status}" |
echo "Usage $0 [start|stop|status|reload|restart]" |
68 |
exit 3 |
;; |
|
;; |
|
69 |
esac |
esac |
|
|
|
|
exit 0 |
|