initscript-example

Summary

Maintainability
Test Coverage
#!/bin/sh
set -e

### BEGIN INIT INFO
# Provides:        keks
# Required-Start:
# Required-Stop:
# Default-Start:    2 3 4 5
# Default-Stop:        0 1 6
# Short-Description:    KeKs Rails Server
### END INIT INFO

DAEMON=/srv/keks/boot.bash
USR=keks
NAME="keks-server"
DESC="KeKs elearning system server"


case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --background --chuid $USR --user $USR --start --quiet --pidfile /var/run/$NAME.pid \
                --make-pidfile --startas  $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --chuid $USR --user $USR --stop --oknodo --quiet --pidfile /var/run/$NAME.pid \
                --startas $DAEMON
    if [ -s /var/run/$NAME.pid ]; then
          rm /var/run/$NAME.pid
        fi
        echo "$NAME."
        ;;
  force-reload)
        # check whether $DAEMON is running. If so, restart
        start-stop-daemon --chuid $USR --user $USR --stop --test --quiet --pidfile \
                /var/run/$NAME.pid --startas $DAEMON \
        && $0 restart \
        || exit 0
        ;;
  restart)
        echo -n "Restarting $DESC: "
        start-stop-daemon --chuid $USR --user $USR --stop --oknodo --quiet --pidfile \
                /var/run/$NAME.pid --startas $DAEMON
        sleep 1
        start-stop-daemon --background --chuid $USR --user $USR --start --quiet --pidfile \
                /var/run/$NAME.pid --make-pidfile --startas $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  status)
        if [ -s /var/run/$NAME.pid ]; then
            RUNNING=$(cat /var/run/$NAME.pid)
            if [ -d /proc/$RUNNING ]; then
                echo "$NAME is running."
                exit 0
            fi

            # No such PID, or executables don't match
            echo "$NAME is not running, but pidfile existed."
            rm /var/run/$NAME.pid
            exit 1
        else
            rm -f /var/run/$NAME.pid
            echo "$NAME not running."
            exit 1
        fi
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0