164 lines
4.3 KiB
Bash
164 lines
4.3 KiB
Bash
#! /bin/sh
|
|
### BEGIN INIT INFO
|
|
# Provides: campcaster-station
|
|
# Required-Start: $remote_fs $network $local_fs apache postgres
|
|
# Required-Stop: $remote_fs
|
|
# Should-Start: $named
|
|
# Should-Stop:
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: campcaster-scheduler
|
|
# Description: A radio program automation and support tool.
|
|
### END INIT INFO
|
|
|
|
|
|
CAMPCASTER_BIN=/usr/lib/campcaster/bin
|
|
CAMPCASTER_LIB=/usr/lib/campcaster/
|
|
CAMPCASTER_ETC=/etc
|
|
|
|
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$CAMPCASTER_BIN
|
|
LD_LIBRARY_PATH=$CAMPCASTER_LIB:$LD_LIBRARY_PATH
|
|
DAEMON=$CAMPCASTER_BIN/campcaster-scheduler
|
|
NAME=campcaster-station
|
|
DESC="campcaster scheduler"
|
|
|
|
test -x $DAEMON || exit 0
|
|
|
|
export PATH
|
|
export LD_LIBRARY_PATH
|
|
|
|
LOGDIR=/var/log/campcaster
|
|
PIDFILE=/var/run/$NAME.pid # defined in /etc/campcaster-scheduler.xml
|
|
DODTIME=3 # Time to wait for the server to die, in seconds
|
|
# If this value is set too low you might not
|
|
# let some servers to die gracefully and
|
|
# 'restart' will not work
|
|
|
|
# Include campcaster defaults if available
|
|
if [ -f /etc/default/campcaster ] ; then
|
|
. /etc/default/campcaster
|
|
fi
|
|
|
|
test -z "$DAEMON_OPTS" && \
|
|
DAEMON_OPTS="-c $CAMPCASTER_ETC/campcaster-scheduler.xml"
|
|
|
|
set -e
|
|
|
|
running_pid()
|
|
{
|
|
# Check if a given process pid's cmdline matches a given name
|
|
pid=$1
|
|
name=$2
|
|
[ -z "$pid" ] && return 1
|
|
[ ! -d /proc/$pid ] && return 1
|
|
cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
|
|
# Is this the expected child?
|
|
[ "$cmd" != "$name" ] && return 1
|
|
return 0
|
|
}
|
|
|
|
running()
|
|
{
|
|
# Check if the process is running looking at /proc
|
|
# (works for all users)
|
|
|
|
# No pidfile, probably no daemon present
|
|
[ ! -f "$PIDFILE" ] && return 1
|
|
# Obtain the pid and check it against the binary name
|
|
pid=`cat $PIDFILE`
|
|
running_pid $pid $DAEMON || return 1
|
|
return 0
|
|
}
|
|
|
|
force_stop() {
|
|
# Forcefully kill the process
|
|
[ ! -f "$PIDFILE" ] && return
|
|
if running ; then
|
|
kill -15 $pid
|
|
# Is it really dead?
|
|
[ -n "$DODTIME" ] && sleep "$DODTIME"s
|
|
if running ; then
|
|
kill -9 $pid
|
|
[ -n "$DODTIME" ] && sleep "$DODTIME"s
|
|
if running ; then
|
|
echo "Cannot kill $NAME (pid=$pid)!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
rm -f $PIDFILE
|
|
return 0
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
echo -n "Starting $DESC: "
|
|
$DAEMON $DAEMON_OPTS start 2>/dev/null
|
|
if running ; then
|
|
echo "$NAME."
|
|
else
|
|
echo " ERROR."
|
|
fi
|
|
;;
|
|
stop)
|
|
echo -n "Stopping $DESC: "
|
|
$DAEMON $DAEMON_OPTS stop 2>/dev/null
|
|
echo "$NAME."
|
|
;;
|
|
force-stop)
|
|
echo -n "Forcefully stopping $DESC: "
|
|
force_stop
|
|
if ! running ; then
|
|
echo "$NAME."
|
|
else
|
|
echo " ERROR."
|
|
fi
|
|
;;
|
|
#reload)
|
|
#
|
|
# If the daemon can reload its config files on the fly
|
|
# for example by sending it SIGHUP, do it here.
|
|
#
|
|
# If the daemon responds to changes in its config file
|
|
# directly anyway, make this a do-nothing entry.
|
|
#
|
|
# echo "Reloading $DESC configuration files."
|
|
# start-stop-daemon --stop --signal 1 --quiet --pidfile \
|
|
# /var/run/$NAME.pid --exec $DAEMON
|
|
#;;
|
|
force-reload)
|
|
#
|
|
# If the "reload" option is implemented, move the "force-reload"
|
|
# option to the "reload" entry above. If not, "force-reload" is
|
|
# just the same as "restart" except that it does nothing if the
|
|
# daemon isn't already running.
|
|
# check wether $DAEMON is running. If so, restart
|
|
if running ; then
|
|
$0 restart || exit 0
|
|
fi
|
|
;;
|
|
restart)
|
|
echo -n "Restarting $DESC: "
|
|
$DAEMON $DAEMON_OPTS stop 2>/dev/null
|
|
[ -n "$DODTIME" ] && sleep $DODTIME
|
|
$DAEMON $DAEMON_OPTS start 2>/dev/null
|
|
echo "$NAME."
|
|
;;
|
|
status)
|
|
echo -n "$NAME is "
|
|
if running ; then
|
|
echo "running"
|
|
else
|
|
echo "not running."
|
|
exit 1
|
|
fi
|
|
;;
|
|
*)
|
|
N=/etc/init.d/$NAME
|
|
echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|