1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/bin/bash
- NAME=asterisk
- USER=asterisk
- GROUP=asterisk
- RUNDIR=/var/run/$NAME
- PIDFILE=$RUNDIR/$NAME.pid
- STARTCMD="(cd /; /usr/sbin/asterisk -G $GROUP -U $USER)"
- STOPCMD="/usr/sbin/asterisk -r -x 'core stop now'"
- STOPGRACECMD="/usr/sbin/asterisk -r -x 'core stop gracefully'"
- STOPTIMEOUT=300
- function getpid() {
- if [ -z "$PIDFILE" ]; then
- pid="$(pgrep -xfn "$STARTCMD")"
- else
- if [ -f "$PIDFILE" ]; then
- pid=$(< $PIDFILE)
- if [ ! -d /proc/"$pid" ]; then
- echo "$NAME: removing stale pidfile $PIDFILE" >&2
- rm -f "$PIDFILE"
- unset pid
- fi
- fi
- fi
- echo "$pid"
- }
- case $1 in
- start)
- pid=$(getpid)
- install -d -m 755 -o $USER $RUNDIR || exit 1
- if [ -n "$pid" ]; then
- echo "$NAME already running with pid $pid" >&2
- exit 1
- fi
- eval "$STARTCMD"
- ;;
- stop|stopnice)
- pid=$(getpid)
- if [ -n "$pid" ]; then
- if [ "$1" == "stop" ]; then
- if [ -n "$STOPCMD" ]; then
- eval "$STOPCMD"
- else
- kill "$pid"
- fi
- else
- if [ -n "$STOPCMD" ]; then
- eval "$STOPGRACECMD"
- else
- echo "$NAME: $1 not implemented"
- exit 1
- fi
- fi
- t=$(printf '%(%s)T' -1)
- tend=$((t+STOPTIMEOUT))
- while [ -d /proc/$pid -a $t -lt $tend ]; do
- sleep 0.5
- t=$(printf '%(%s)T' -1)
- done
- if [ -d /proc/"$pid" ]; then
- echo "$NAME still running with pid $pid" >&2
- else
- [ -n "$PIDFILE" ] && rm -f "$PIDFILE"
- fi
- else
- echo "$NAME is not running" >&2
- fi
- ;;
- restart)
- $0 stop && \
- $0 start
- ;;
- restartnice)
- $0 stopnice && \
- $0 start
- ;;
- status)
- pid=$(getpid)
- if [ -n "$pid" ]; then
- echo "$NAME is running with pid $pid"
- else
- echo "$NAME is not running"
- fi
- ;;
- *)
- echo "usage: $0 [start|stop|stopnice|restart|restartnice|status]"
- ;;
- esac
|