Replacement init script for memcached on CentOS 5

This script is obsolete for current releases of the Drupal Memcache module. The overall memcached size per server is now the only parameter requiring tuning.

This updated script allows easy manipulation of many cache instances.

/etc/init.d/memcached
#! /bin/sh
#
# chkconfig: - 55 45
# description:	The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
# pidfile: /var/run/memcached/memcached.*.pid

# Standard LSB functions
#. /lib/lsb/init-functions

# Source function library.
. /etc/init.d/functions

PORT=11211
USER=memcached
MAXCONN=1024
OPTIONS=""

if [ -f /etc/sysconfig/memcached ];then 
	. /etc/sysconfig/memcached
fi

# Check that networking is up.
. /etc/sysconfig/network

if [ "$NETWORKING" = "no" ]
then
	exit 0
fi

RETVAL=0
prog="memcached"

start_instance() {
	echo -n $"Starting $prog ($1): "
	daemon --pidfile /var/run/memcached/memcached.$1.pid memcached -d -p $PORT -u $USER  -m $2 -c $MAXCONN -P /var/run/memcached/memcached.$1.pid $OPTIONS
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached.$1
	PORT=`expr $PORT + 1`
}

stop_instance() {
	echo -n $"Stopping $prog ($1): "
	killproc -p /var/run/memcached/memcached.$1.pid /usr/bin/memcached
        RETVAL=$?
        echo
	if [ $RETVAL -eq 0 ] ; then
            rm -f /var/lock/subsys/memcached.$1
            rm -f /var/run/memcached.$1.pid
        fi
}

start () {
	# insure that /var/run/memcached has proper permissions
	if [ "`stat -c %U /var/run/memcached`" != "$USER" ]; then
		chown $USER /var/run/memcached
	fi

	start_instance default 64;
	start_instance block 16;
	start_instance content 128;
	start_instance filter 128;
	start_instance form 32;
	start_instance menu 16;
	start_instance page 8;
	start_instance update 8;
	start_instance views 8;
}
stop () {
      	stop_instance default;
        stop_instance block;
        stop_instance content;
        stop_instance filter;
        stop_instance form;
        stop_instance menu;
        stop_instance page;
        stop_instance update;
        stop_instance views;
}

restart () {
        stop
        start
}


# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
	status memcached
	;;
  restart|reload|force-reload)
	restart
	;;
  *)
	echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
	exit 1
esac

exit $?