ferencd@0: #! /bin/sh ferencd@0: ### BEGIN INIT INFO ferencd@0: # Provides: Dungeons server ferencd@0: # Required-Start: $network $local_fs $remote_fs ferencd@0: # Required-Stop: $network $local_fs $remote_fs ferencd@0: # Default-Start: 2 3 4 5 ferencd@0: # Default-Stop: 0 1 6 ferencd@0: # Short-Description: Dungeons web servers' daemon ferencd@0: ### END INIT INFO ferencd@0: ferencd@0: # Author: Dungeon Master ferencd@0: ferencd@0: # ferencd@0: # LINK ME TO etc/init.d AND RUN update-rc.d wendy-web defaults ferencd@0: # ferencd@0: ferencd@0: ferencd@0: # Do NOT "set -e" ferencd@0: ferencd@0: # PATH should only include /usr/* if it runs after the mountnfs.sh script ferencd@0: PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin ferencd@0: DESC="Dungeons server" ferencd@0: NAME=dungeons ferencd@0: DAEMON=/usr/bin/ruby ferencd@0: DAEMON_ARGS="-I /home/ferencd/mazy/ /home/ferencd/mazy/server.rb" ferencd@0: PIDFILE=/var/run/$NAME.pid ferencd@0: SCRIPTNAME=/etc/init.d/$NAME ferencd@0: ferencd@0: # Exit if the package is not installed ferencd@0: [ -x "$DAEMON" ] || exit 0 ferencd@0: ferencd@0: # Read configuration variable file if it is present ferencd@0: [ -r /etc/default/$NAME ] && . /etc/default/$NAME ferencd@0: ferencd@0: # Load the VERBOSE setting and other rcS variables ferencd@0: . /lib/init/vars.sh ferencd@0: ferencd@0: # Define LSB log_* functions. ferencd@0: # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. ferencd@0: . /lib/lsb/init-functions ferencd@0: ferencd@0: # ferencd@0: # Function that starts the daemon/service ferencd@0: # ferencd@0: do_start() ferencd@0: { ferencd@0: # Return ferencd@0: # 0 if daemon has been started ferencd@0: # 1 if daemon was already running ferencd@0: # 2 if daemon could not be started ferencd@0: start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ ferencd@0: || return 1 ferencd@0: start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON -- \ ferencd@0: $DAEMON_ARGS \ ferencd@0: || return 2 ferencd@0: # Add code here, if necessary, that waits for the process to be ready ferencd@0: # to handle requests from services started subsequently which depend ferencd@0: # on this one. As a last resort, sleep for some time. ferencd@0: } ferencd@0: ferencd@0: # ferencd@0: # Function that stops the daemon/service ferencd@0: # ferencd@0: do_stop() ferencd@0: { ferencd@0: # Return ferencd@0: # 0 if daemon has been stopped ferencd@0: # 1 if daemon was already stopped ferencd@0: # 2 if daemon could not be stopped ferencd@0: # other if a failure occurred ferencd@0: start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE ferencd@0: RETVAL="$?" ferencd@0: [ "$RETVAL" = 2 ] && return 2 ferencd@0: # Wait for children to finish too if this is a daemon that forks ferencd@0: # and if the daemon is only ever run from this initscript. ferencd@0: # If the above conditions are not satisfied then add some other code ferencd@0: # that waits for the process to drop all resources that could be ferencd@0: # needed by services started subsequently. A last resort is to ferencd@0: # sleep for some time. ferencd@0: start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON ferencd@0: [ "$?" = 2 ] && return 2 ferencd@0: # Many daemons don't delete their pidfiles when they exit. ferencd@0: rm -f $PIDFILE ferencd@0: return "$RETVAL" ferencd@0: } ferencd@0: ferencd@0: # ferencd@0: # Function that sends a SIGHUP to the daemon/service ferencd@0: # ferencd@0: do_reload() { ferencd@0: # ferencd@0: # If the daemon can reload its configuration without ferencd@0: # restarting (for example, when it is sent a SIGHUP), ferencd@0: # then implement that here. ferencd@0: # ferencd@0: start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME ferencd@0: return 0 ferencd@0: } ferencd@0: ferencd@0: case "$1" in ferencd@0: start) ferencd@0: [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" ferencd@0: do_start ferencd@0: case "$?" in ferencd@0: 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; ferencd@0: 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; ferencd@0: esac ferencd@0: ;; ferencd@0: stop) ferencd@0: [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" ferencd@0: do_stop ferencd@0: case "$?" in ferencd@0: 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; ferencd@0: 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; ferencd@0: esac ferencd@0: ;; ferencd@0: #reload|force-reload) ferencd@0: # ferencd@0: # If do_reload() is not implemented then leave this commented out ferencd@0: # and leave 'force-reload' as an alias for 'restart'. ferencd@0: # ferencd@0: #log_daemon_msg "Reloading $DESC" "$NAME" ferencd@0: #do_reload ferencd@0: #log_end_msg $? ferencd@0: #;; ferencd@0: restart|force-reload) ferencd@0: # ferencd@0: # If the "reload" option is implemented then remove the ferencd@0: # 'force-reload' alias ferencd@0: # ferencd@0: log_daemon_msg "Restarting $DESC" "$NAME" ferencd@0: do_stop ferencd@0: case "$?" in ferencd@0: 0|1) ferencd@0: do_start ferencd@0: case "$?" in ferencd@0: 0) log_end_msg 0 ;; ferencd@0: 1) log_end_msg 1 ;; # Old process is still running ferencd@0: *) log_end_msg 1 ;; # Failed to start ferencd@0: esac ferencd@0: ;; ferencd@0: *) ferencd@0: # Failed to stop ferencd@0: log_end_msg 1 ferencd@0: ;; ferencd@0: esac ferencd@0: ;; ferencd@0: *) ferencd@0: #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 ferencd@0: echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 ferencd@0: exit 3 ferencd@0: ;; ferencd@0: esac ferencd@0: ferencd@0: : ferencd@0: