File: sms3

package info (click to toggle)
smstools 3.1.15-1.1%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 1,656 kB
  • ctags: 879
  • sloc: ansic: 14,857; sh: 1,195; php: 115; makefile: 48; awk: 17
file content (151 lines) | stat: -rwxr-xr-x 3,791 bytes parent folder | download | duplicates (9)
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
#! /bin/sh
# This script can be used to start/stop smsd
# as a daemon in Linux, Solaris, Cygwin, FreeBSD
# and MAC OS X Terminal window (Darwin).
# This script is to be used with smsd version >= 3.0.3. 

### BEGIN INIT INFO
# Provides:          smstools
# Required-Start:    $syslog
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts smstools
### END INIT INFO

# Set USER and GROUP, if necessary:
USER=""
GROUP=""

# If an unpriviledged user is selected, make sure that next two
# files are writable by that user:
PIDFILE="/var/run/smsd.pid"
INFOFILE="/var/run/smsd.working"
# Logfile can also be defined in here:
LOGFILE="/var/log/smsd.log"

DAEMON=/usr/local/bin/smsd
# A program which turns power off for couple of seconds:
RESETMODEMS=/usr/local/bin/smsd_resetmodems
NAME=smsd
PSOPT="-e"
ECHO=echo
case `uname` in
  *BSD|Darwin)
    PSOPT="axc"
    ;;
  SunOS)
    ECHO=/usr/ucb/echo
    ;;
esac

# Maximum time to stop smsd, after that it gets killed hardly:
MAXWAIT=45

case "$1" in
  start)
	test -x $DAEMON || exit 0
	$ECHO -n "Starting SMS Daemon: "
	MSG="."
	ARGS="-n MAINPROCESS -p$PIDFILE -i$INFOFILE"
	[ "x$USER" != x ] && ARGS="$ARGS -u$USER"
	[ "x$GROUP" != x ] && ARGS="$ARGS -g$GROUP"
	[ "x$LOGFILE" != x ] && ARGS="$ARGS -l$LOGFILE"
	PID=`cat $PIDFILE 2>/dev/null`
	if [ "x$PID" != x ]; then
	  if kill -0 $PID 2>/dev/null; then
	    MSG=" already running ($PID)."
	  else
	    PID=""
	  fi
	fi
	if [ "x$PID" = x ]; then
	  if ps $PSOPT | grep $NAME | grep -v grep >/dev/null; then
	    MSG=" already running."
	  else
	    $DAEMON $ARGS
	    sleep 1
	    PIDS=`ps $PSOPT | grep $NAME | grep -v grep`
	    [ "x$PIDS" = x ] && MSG=" failed."
	  fi
	fi
	echo "$NAME$MSG"
	;;

  stop)
	if ps $PSOPT | grep $NAME | grep -v grep >/dev/null; then
	  PID=`cat $PIDFILE 2>/dev/null`
	  if [ "x$PID" != x ]; then
	    P=`kill -0 $PID 2>/dev/null`
	    [ "x$P" != x ] && PID=""
	  fi
	  if [ "x$PID" != x ]; then
	    kill $PID
	  else
	    kill `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev/null 2>&1
	  fi
	  sleep 1
	  if ps $PSOPT | grep $NAME | grep -v grep >/dev/null; then
	    echo "Allowing $NAME to terminate gracefully within $MAXWAIT seconds"
	    infofound=0
	    dots=0
	    seconds=0
	    while ps $PSOPT | grep $NAME | grep -v grep >/dev/null; do
	      if [ $infofound -lt 1 ]; then
	        if [ -f $INFOFILE ]; then
	          infofound=1
	          if [ $dots -gt 0 ]; then
	            echo ""
	            dots=0
	          fi
	          $ECHO -n "$NAME is currently "
	          cat $INFOFILE
	          echo "Time counting is now disabled and we will wait until this job is complete."
	          echo "If you are very hasty, use \"$0 force-stop\" to kill $NAME hardly (not recommended)."
	        fi
	      fi
	      [ $infofound -lt 1 ] && seconds=`expr $seconds + 1`
	      $ECHO -n "."
	      dots=`expr $dots + 1`
	      if [ "$seconds" -ge $MAXWAIT ]; then
	        if [ $dots -gt 0 ]; then
	          echo ""
	          dots=0
	        fi
	        echo "Timeout occured, killing $NAME hardly."
	        kill -9 `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev/null 2>&1
	        [ -f $PIDFILE ] && rm $PIDFILE
	        seconds=0
	      fi
	      sleep 1
	    done
	    [ $dots -gt 0 ] && echo ""
	    #echo "$NAME is stopped."
	  fi
	fi
	;;

  restart|reload)
	$0 stop
	$0 start
	;;

  force-stop)
	if ps $PSOPT | grep $NAME | grep -v grep >/dev/null; then
	  echo "Killing $NAME."
	  kill -9 `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev/null 2>&1
	fi
	[ -f $PIDFILE ] && rm $PIDFILE
	;;

  reset)
	$0 stop
	[ -f "$RESETMODEMS" ] && "$RESETMODEMS"
	sleep 30
	$0 start
	;;

  *)
	echo "Usage: $0 {start|stop|restart|force-stop|reset}"
	exit 1
esac