Skip to content

Instantly share code, notes, and snippets.

@rj-reilly
Forked from blalor/gist:c325d500818361e28daf
Last active August 29, 2015 14:23
Show Gist options
  • Select an option

  • Save rj-reilly/94066ecbfedc8c169ca8 to your computer and use it in GitHub Desktop.

Select an option

Save rj-reilly/94066ecbfedc8c169ca8 to your computer and use it in GitHub Desktop.

Revisions

  1. @blalor blalor created this gist May 2, 2014.
    134 changes: 134 additions & 0 deletions gistfile1.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,134 @@
    #!/bin/bash
    #
    # consul Manage the consul agent
    #
    # chkconfig: 2345 95 95
    # description: Consul is a tool for service discovery and configuration
    # processname: consul
    # config: /etc/consul.conf
    # pidfile: /var/run/consul.pid

    ### BEGIN INIT INFO
    # Provides: consul
    # Required-Start: $local_fs $network
    # Required-Stop:
    # Should-Start:
    # Should-Stop:
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Manage the consul agent
    # Description: Consul is a tool for service discovery and configuration
    ### END INIT INFO

    # source function library
    . /etc/rc.d/init.d/functions

    prog="consul"
    user="consul"
    exec="/usr/local/bin/$prog"
    pidfile="/var/run/$prog.pid"
    lockfile="/var/lock/subsys/$prog"
    logfile="/var/log/$prog"
    conffile="/etc/consul.conf"
    confdir="/etc/consul.d"

    # pull in sysconfig settings
    [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

    export GOMAXPROCS=${GOMAXPROCS:-2}

    start() {
    [ -x $exec ] || exit 5

    [ -f $conffile ] || exit 6
    [ -d $confdir ] || exit 6

    umask 077

    touch $logfile $pidfile
    chown $user:$user $logfile $pidfile

    echo -n $"Starting $prog: "

    ## holy shell shenanigans, batman!
    ## daemon can't be backgrounded. we need the pid of the spawned process,
    ## which is actually done via runuser thanks to --user. you can't do "cmd
    ## &; action" but you can do "{cmd &}; action".
    daemon \
    --pidfile=$pidfile \
    --user=consul \
    " { $exec agent -config-file=$conffile -config-dir=$confdir &>> $logfile & } ; echo \$! >| $pidfile "

    RETVAL=$?
    echo

    [ $RETVAL -eq 0 ] && touch $lockfile

    return $RETVAL
    }

    stop() {
    echo -n $"Shutting down $prog: "
    ## graceful shutdown with SIGINT
    killproc -p $pidfile $exec -INT
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $lockfile
    return $RETVAL
    }

    restart() {
    stop
    start
    }

    reload() {
    echo -n $"Reloading $prog: "
    killproc -p $pidfile $exec -HUP
    echo
    }

    force_reload() {
    restart
    }

    rh_status() {
    status -p "$pidfile" -l $prog $exec
    }

    rh_status_q() {
    rh_status >/dev/null 2>&1
    }

    case "$1" in
    start)
    rh_status_q && exit 0
    $1
    ;;
    stop)
    rh_status_q || exit 0
    $1
    ;;
    restart)
    $1
    ;;
    reload)
    rh_status_q || exit 7
    $1
    ;;
    force-reload)
    force_reload
    ;;
    status)
    rh_status
    ;;
    condrestart|try-restart)
    rh_status_q || exit 0
    restart
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
    exit 2
    esac

    exit $?