1*1e52a254SGordon Franke#! /bin/bash
24bfc1ebfSMonty Taylor### BEGIN INIT INFO
34bfc1ebfSMonty Taylor# Provides:          memcached
44bfc1ebfSMonty Taylor# Required-Start:    $syslog
54bfc1ebfSMonty Taylor# Required-Stop:     $syslog
6*1e52a254SGordon Franke# Should-Start:        $local_fs
7*1e52a254SGordon Franke# Should-Stop:        $local_fs
84bfc1ebfSMonty Taylor# Default-Start:     2 3 4 5
94bfc1ebfSMonty Taylor# Default-Stop:      0 1 6
10*1e52a254SGordon Franke# Short-Description:    memcached - Memory caching daemon
11*1e52a254SGordon Franke# Description:        memcached - Memory caching daemon
124bfc1ebfSMonty Taylor### END INIT INFO
134bfc1ebfSMonty Taylor
14*1e52a254SGordon Franke# Usage:
15*1e52a254SGordon Franke# cp /etc/memcached.conf /etc/memcached_server1.conf
16*1e52a254SGordon Franke# cp /etc/memcached.conf /etc/memcached_server2.conf
17*1e52a254SGordon Franke# start all instances:
18*1e52a254SGordon Franke# /etc/init.d/memcached start
19*1e52a254SGordon Franke# start one instance:
20*1e52a254SGordon Franke# /etc/init.d/memcached start server1
21*1e52a254SGordon Franke# stop all instances:
22*1e52a254SGordon Franke# /etc/init.d/memcached stop
23*1e52a254SGordon Franke# stop one instance:
24*1e52a254SGordon Franke# /etc/init.d/memcached stop server1
25*1e52a254SGordon Franke# There is no "status" command.
264b1b1ae7SBrad Fitzpatrick
274b1b1ae7SBrad FitzpatrickPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
284b1b1ae7SBrad FitzpatrickDAEMON=/usr/bin/memcached
29*1e52a254SGordon FrankeDAEMONNAME=memcached
304b1b1ae7SBrad FitzpatrickDAEMONBOOTSTRAP=/usr/share/memcached/scripts/start-memcached
314b1b1ae7SBrad FitzpatrickDESC=memcached
324b1b1ae7SBrad Fitzpatrick
334b1b1ae7SBrad Fitzpatricktest -x $DAEMON || exit 0
344b1b1ae7SBrad Fitzpatricktest -x $DAEMONBOOTSTRAP || exit 0
354b1b1ae7SBrad Fitzpatrick
364b1b1ae7SBrad Fitzpatrickset -e
374b1b1ae7SBrad Fitzpatrick
38*1e52a254SGordon FrankeFILES=(/etc/memcached_*.conf)
39*1e52a254SGordon Franke# check for alternative config schema
40*1e52a254SGordon Frankeif [ -r "${FILES[0]}" ]; then
41*1e52a254SGordon Franke  CONFIGS=()
42*1e52a254SGordon Franke  for FILE in "${FILES[@]}";
43*1e52a254SGordon Franke  do
44*1e52a254SGordon Franke    # remove prefix
45*1e52a254SGordon Franke    NAME=${FILE#/etc/}
46*1e52a254SGordon Franke    # remove suffix
47*1e52a254SGordon Franke    NAME=${NAME%.conf}
48*1e52a254SGordon Franke
49*1e52a254SGordon Franke    # check optional second param
50*1e52a254SGordon Franke    if [ $# -ne 2 ];
51*1e52a254SGordon Franke    then
52*1e52a254SGordon Franke      # add to config array
53*1e52a254SGordon Franke      CONFIGS+=($NAME)
54*1e52a254SGordon Franke    elif [ "memcached_$2" == "$NAME" ];
55*1e52a254SGordon Franke    then
56*1e52a254SGordon Franke      # use only one memcached
57*1e52a254SGordon Franke      CONFIGS=($NAME)
58*1e52a254SGordon Franke      break;
59*1e52a254SGordon Franke    fi;
60*1e52a254SGordon Franke  done;
61*1e52a254SGordon Franke
62*1e52a254SGordon Franke  if [ ${#CONFIGS[@]} == 0 ];
63*1e52a254SGordon Franke  then
64*1e52a254SGordon Franke    echo "Config not exist for: $2" >&2
65*1e52a254SGordon Franke    exit 1
66*1e52a254SGordon Franke  fi;
67*1e52a254SGordon Frankeelse
68*1e52a254SGordon Franke  CONFIGS=(memcached)
69*1e52a254SGordon Frankefi;
70*1e52a254SGordon Franke
71*1e52a254SGordon FrankeCONFIG_NUM=${#CONFIGS[@]}
72*1e52a254SGordon Frankefor ((i=0; i < $CONFIG_NUM; i++)); do
73*1e52a254SGordon Franke  NAME=${CONFIGS[${i}]}
74*1e52a254SGordon Franke  PIDFILE="/var/run/${NAME}.pid"
75*1e52a254SGordon Franke
764b1b1ae7SBrad Fitzpatrickcase "$1" in
774b1b1ae7SBrad Fitzpatrick    start)
784b1b1ae7SBrad Fitzpatrick        echo -n "Starting $DESC: "
79*1e52a254SGordon Franke        start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
804b1b1ae7SBrad Fitzpatrick        echo "$NAME."
814b1b1ae7SBrad Fitzpatrick        ;;
824b1b1ae7SBrad Fitzpatrick    stop)
834b1b1ae7SBrad Fitzpatrick        echo -n "Stopping $DESC: "
844b1b1ae7SBrad Fitzpatrick        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
854b1b1ae7SBrad Fitzpatrick        echo "$NAME."
864b1b1ae7SBrad Fitzpatrick        rm -f $PIDFILE
874b1b1ae7SBrad Fitzpatrick        ;;
884b1b1ae7SBrad Fitzpatrick
894b1b1ae7SBrad Fitzpatrick    restart|force-reload)
904b1b1ae7SBrad Fitzpatrick    #
914b1b1ae7SBrad Fitzpatrick    #   If the "reload" option is implemented, move the "force-reload"
924b1b1ae7SBrad Fitzpatrick    #   option to the "reload" entry above. If not, "force-reload" is
934b1b1ae7SBrad Fitzpatrick    #   just the same as "restart".
944b1b1ae7SBrad Fitzpatrick    #
954b1b1ae7SBrad Fitzpatrick        echo -n "Restarting $DESC: "
964b1b1ae7SBrad Fitzpatrick        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
974b1b1ae7SBrad Fitzpatrick        rm -f $PIDFILE
984b1b1ae7SBrad Fitzpatrick        sleep 1
99*1e52a254SGordon Franke        start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
1004b1b1ae7SBrad Fitzpatrick        echo "$NAME."
1014b1b1ae7SBrad Fitzpatrick        ;;
1024b1b1ae7SBrad Fitzpatrick    *)
1034b1b1ae7SBrad Fitzpatrick        N=/etc/init.d/$NAME
1044b1b1ae7SBrad Fitzpatrick    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
1054b1b1ae7SBrad Fitzpatrick        echo "Usage: $N {start|stop|restart|force-reload}" >&2
1064b1b1ae7SBrad Fitzpatrick        exit 1
1074b1b1ae7SBrad Fitzpatrick        ;;
1084b1b1ae7SBrad Fitzpatrickesac
109*1e52a254SGordon Frankedone;
1104b1b1ae7SBrad Fitzpatrick
1114b1b1ae7SBrad Fitzpatrickexit 0
112