Skip to content

Instantly share code, notes, and snippets.

@centminmod
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save centminmod/6810d6a08cafe4ac3032 to your computer and use it in GitHub Desktop.
Save centminmod/6810d6a08cafe4ac3032 to your computer and use it in GitHub Desktop.
new /etc/init.d/memcached for centminmod.com with pid file
#!/bin/sh
# chkconfig: - 80 12
# description: The memcached daemon is a network memory cache service.
# processname: memcached
BINNAME=memcached
BIN=/usr/local/bin/memcached
USER=nobody
LOGGING='n'
LOGFILE="/var/log/memcached.log"
LOGFILEB="/var/log/memcached2.log"
CON=2048
BACKLOG=2048
MAXREQ=200
THREADS=4
MINSP=72
CHUNKF=1.25
PORT1=11211
PORT2=11212
SOCKET_ENABLE=n
SOCKETA='-s /var/run/memcached/memcached1.sock -a 0755'
SOCKETB='-s /var/run/memcached/memcached2.sock -a 0755'
MEMSIZE=8
SERVERCOUNT=1
SERVERIP='127.0.0.1'
OPTIONS='-o slab_reassign,slab_automove'
PIDA='/var/run/memcached/memcached1.pid'
PIDB='/var/run/memcached/memcached2.pid'
if [ -f /proc/user_beancounters ]; then
ulimit -s 256
fi
if [ ! -d /var/run/memcached/ ]; then
mkdir -p /var/run/memcached/
chmod 755 /var/run/memcached/
chown nobody:nobody /var/run/memcached/
fi
if [[ "$SOCKET_ENABLE" = [yY] ]]; then
METHODA="$SOCKETA"
METHODB="$SOCKETB"
else
METHODA="-l $SERVERIP -p $PORT1"
METHODB="-l $SERVERIP -p $PORT2"
fi
DEBUG='n'
CPUSET='n'
#############################
processcheck() {
PROCESS=$(ps ax | grep memcached | grep -Ev '(/etc/init.d/memcached|grep|memcached status|memcached start|memcached stop|memcached restart|memcached_reinstall)')
if [ "$SERVERCOUNT" == '2' ]; then
if [[ ! -z "$PROCESS" || -f $PIDA ]] || [[ ! -z "$PROCESS" || -f $PIDB ]]; then
CHECKM='yesmemcached'
else
CHECKM='nomemcached'
fi
else
if [[ ! -z "$PROCESS" || -f $PIDA ]]; then
CHECKM='yesmemcached'
else
CHECKM='nomemcached'
fi
fi
}
setcpu() {
if [ "$CPUSET" == 'y' ]; then
CORECHECK=$(taskset -pc $(pidof $BINNAME) | awk -F ': ' '{print $2}' | awk -F ',' '{print $3}')
if [ "$CORECHECK" == '3' ]; then
taskset -pc 3 $(pidof $BINNAME) 2>&1 >/dev/null
fi
fi
}
twomem() {
processcheck
if [ "$DEBUG" == 'y' ]; then
echo $CHECKM
fi
if [[ "$CHECKM" == 'nomemcached' ]]; then
echo "Memcached server started "
if [[ "$LOGGING" = [yY] ]]; then
$BIN -d -m $MEMSIZE $METHODA -c $CON -b $BACKLOG -R $MAXREQ -t $THREADS -n $MINSP -f $CHUNKF -u $USER $OPTIONS -P $PIDA -vv > $LOGFILE 2>&1
$BIN -d -m $MEMSIZE $METHODB -c $CON -b $BACKLOG -R $MAXREQ -t $THREADS -n $MINSP -f $CHUNKF -u $USER $OPTIONS -P $PIDB -vv > $LOGFILEB 2>&1
else
$BIN -d -m $MEMSIZE $METHODA -c $CON -b $BACKLOG -R $MAXREQ -t $THREADS -n $MINSP -f $CHUNKF -u $USER $OPTIONS -P $PIDA
$BIN -d -m $MEMSIZE $METHODB -c $CON -b $BACKLOG -R $MAXREQ -t $THREADS -n $MINSP -f $CHUNKF -u $USER $OPTIONS -P $PIDB
fi
else
echo "Memcached server already running "
fi
}
onemem() {
processcheck
if [ "$DEBUG" == 'y' ]; then
echo $CHECKM
fi
if [[ "$CHECKM" == 'nomemcached' ]]; then
echo "Memcached server started "
if [[ "$LOGGING" = [yY] ]]; then
$BIN -d -m $MEMSIZE $METHODA -c $CON -b $BACKLOG -R $MAXREQ -t $THREADS -n $MINSP -f $CHUNKF -u $USER $OPTIONS -P $PIDA -vv > $LOGFILE 2>&1
else
$BIN -d -m $MEMSIZE $METHODA -c $CON -b $BACKLOG -R $MAXREQ -t $THREADS -n $MINSP -f $CHUNKF -u $USER $OPTIONS -P $PIDA
fi
else
echo "Memcached server already running "
fi
}
mstart() {
if [ "$SERVERCOUNT" == '2' ]; then
twomem
elif [ "$SERVERCOUNT" == '1' ]; then
onemem
setcpu
fi
}
mstop() {
processcheck
if [ "$DEBUG" == 'y' ]; then
echo $CHECKM
fi
if [[ "$CHECKM" != 'nomemcached' ]]; then
echo "Memcached server stopped "
if [ "$SERVERCOUNT" == '2' ]; then
kill -9 $(cat $PIDA 2>/dev/null) 2>/dev/null
RETVALA=$?
if [ $RETVALA -eq 0 ] ; then
rm -rf $PIDA 2>/dev/null
rm -rf $PIDB 2>/dev/null
kill -9 $(pidof $BINNAME) 2>/dev/null
fi
kill -9 $(cat $PIDB 2>/dev/null) 2>/dev/null
RETVALB=$?
if [ $RETVALB -eq 0 ] ; then
rm -rf $PIDA 2>/dev/null
rm -rf $PIDB 2>/dev/null
kill -9 $(pidof $BINNAME) 2>/dev/null
fi
else
kill -9 $(cat $PIDA 2>/dev/null) 2>/dev/null
RETVALA=$?
if [ $RETVALA -eq 0 ] ; then
rm -rf $PIDA 2>/dev/null
kill -9 $(pidof $BINNAME) 2>/dev/null
fi
fi
else
# echo "Memcached server already stopped "
rm -rf $PIDA 2>/dev/null
rm -rf $PIDB 2>/dev/null
kill -9 $(pidof $BINNAME) 2>/dev/null
fi
}
mstatus() {
processcheck
if [ "$DEBUG" == 'y' ]; then
echo $CHECKM
fi
if [[ "$CHECKM" == 'nomemcached' ]]; then
echo "Memcached server not running "
else
echo "Memcached server is running "
fi
}
#############################
if [[ "$SERVERCOUNT" == '2' && ! "$1" ]]; then
twomem
elif [[ "$SERVERCOUNT" == '1' && ! "$1" ]]; then
onemem
setcpu
#echo "1=${1} 2=${2}" #debug
fi
case "$1" in
start)
mstart
;;
stop)
mstop
;;
restart)
mstop
sleep 2
mstart
;;
status)
mstatus
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment