summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/memcached-init76
-rwxr-xr-xscripts/start-memcached6
2 files changed, 64 insertions, 18 deletions
diff --git a/scripts/memcached-init b/scripts/memcached-init
index 1ee7118..ebe2ab0 100755
--- a/scripts/memcached-init
+++ b/scripts/memcached-init
@@ -1,41 +1,82 @@
-#! /bin/sh
-#
-# skeleton example file to build /etc/init.d/ scripts.
-# This file should be used to construct scripts for /etc/init.d.
-#
-# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
-# Modified for Debian
-# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
-#
-# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
-#
+#! /bin/bash
### BEGIN INIT INFO
# Provides: memcached
# Required-Start: $syslog
# Required-Stop: $syslog
+# Should-Start: $local_fs
+# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
-# Short-Description: Start memcached daemon at boot time
-# Description: Enable memcached server
+# Short-Description: memcached - Memory caching daemon
+# Description: memcached - Memory caching daemon
### END INIT INFO
+# Usage:
+# cp /etc/memcached.conf /etc/memcached_server1.conf
+# cp /etc/memcached.conf /etc/memcached_server2.conf
+# start all instances:
+# /etc/init.d/memcached start
+# start one instance:
+# /etc/init.d/memcached start server1
+# stop all instances:
+# /etc/init.d/memcached stop
+# stop one instance:
+# /etc/init.d/memcached stop server1
+# There is no "status" command.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/memcached
+DAEMONNAME=memcached
DAEMONBOOTSTRAP=/usr/share/memcached/scripts/start-memcached
-NAME=memcached
DESC=memcached
-PIDFILE=/var/run/$NAME.pid
test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0
set -e
+FILES=(/etc/memcached_*.conf)
+# check for alternative config schema
+if [ -r "${FILES[0]}" ]; then
+ CONFIGS=()
+ for FILE in "${FILES[@]}";
+ do
+ # remove prefix
+ NAME=${FILE#/etc/}
+ # remove suffix
+ NAME=${NAME%.conf}
+
+ # check optional second param
+ if [ $# -ne 2 ];
+ then
+ # add to config array
+ CONFIGS+=($NAME)
+ elif [ "memcached_$2" == "$NAME" ];
+ then
+ # use only one memcached
+ CONFIGS=($NAME)
+ break;
+ fi;
+ done;
+
+ if [ ${#CONFIGS[@]} == 0 ];
+ then
+ echo "Config not exist for: $2" >&2
+ exit 1
+ fi;
+else
+ CONFIGS=(memcached)
+fi;
+
+CONFIG_NUM=${#CONFIGS[@]}
+for ((i=0; i < $CONFIG_NUM; i++)); do
+ NAME=${CONFIGS[${i}]}
+ PIDFILE="/var/run/${NAME}.pid"
+
case "$1" in
start)
echo -n "Starting $DESC: "
- start-stop-daemon --start --quiet --exec $DAEMONBOOTSTRAP
+ start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
echo "$NAME."
;;
stop)
@@ -55,7 +96,7 @@ case "$1" in
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
rm -f $PIDFILE
sleep 1
- start-stop-daemon --start --quiet --exec $DAEMONBOOTSTRAP
+ start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
echo "$NAME."
;;
*)
@@ -65,5 +106,6 @@ case "$1" in
exit 1
;;
esac
+done;
exit 0
diff --git a/scripts/start-memcached b/scripts/start-memcached
index 145a25a..e33b95c 100755
--- a/scripts/start-memcached
+++ b/scripts/start-memcached
@@ -23,6 +23,11 @@ my $params; my $etchandle; my $etcfile = "/etc/memcached.conf";
my $memcached = "/usr/bin/memcached";
my $pidfile = "/var/run/memcached.pid";
+if (scalar(@ARGV) == 2) {
+ $etcfile = shift(@ARGV);
+ $pidfile = shift(@ARGV);
+}
+
# If we don't get a valid logfile parameter in the /etc/memcached.conf file,
# we'll just throw away all of our in-daemon output. We need to re-tie it so
# that non-bash shells will not hang on logout. Thanks to Michael Renner for
@@ -114,4 +119,3 @@ if($pid == 0)
print STDERR "Can't write pidfile to $pidfile.\n";
}
}
-