#! /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