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