diff options
Diffstat (limited to 'src/redis/redis.d')
-rwxr-xr-x | src/redis/redis.d | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/redis/redis.d b/src/redis/redis.d new file mode 100755 index 0000000..e1c79dd --- /dev/null +++ b/src/redis/redis.d @@ -0,0 +1,78 @@ +#!/bin/bash + +daemon_name=redis + +. /etc/rc.conf +. /etc/rc.d/functions + +REDISPORT=6379 +EXEC=/usr/bin/redis-server +CLIEXEC=/usr/bin/redis-cli +PIDFILE=/var/run/redis.pid +WORKDIR=/var/lib/redis +CONF="/etc/redis.conf" + +# Check if process exists +PID=$(cat $PIDFILE 2>/dev/null) +[ -d /proc/${PID} ] || rm -f $PIDFILE + +# Grab the server password, if exists +REDISPASS=`egrep -o '^requirepass ([^#]+)' $CONF | cut -d\ -f 2` +[ -n "$REDISPASS" ] && CLIEXEC="$CLIEXEC -a $REDISPASS" + +case "$1" in + start) + stat_busy "Starting $daemon_name" + [ -d $WORKDIR ] || mkdir $WORKDIR + + if [ -f $PIDFILE ]; then + stat_fail + exit 1 + else + $EXEC $CONF >/dev/null + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + add_daemon $daemon_name + stat_done + fi + fi + ;; + + stop) + stat_busy "Stopping $daemon_name" + + if [ ! -f $PIDFILE ]; then + stat_fail + exit 1 + else + PID=$(cat $PIDFILE) + + # And grab the server address + REDISADDR=`egrep -o '^bind ([^#]+)' $CONF | cut -d' ' -f2` + [ -n "$REDISADDR" ] && CLIEXEC="$CLIEXEC -h $REDISADDR" + + $CLIEXEC -p $REDISPORT shutdown + [ -d /proc/${PID} ] && sleep 1 + [ -d /proc/${PID} ] && sleep 5 + [ -d /proc/${PID} ] && kill -9 $PID + [ -d /proc/${PID} ] && stat_fail || { stat_done; rm_daemon $daemon_name; } + fi + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + status) + stat_busy "Checking $daemon_name status"; + ck_status $daemon_name + ;; + + *) + echo "usage: $0 {start|stop|restart|status}" +esac +exit 0 |