-
-
Save tessro/257849 to your computer and use it in GitHub Desktop.
#!/bin/sh | |
# | |
# redis - this script starts and stops the redis-server daemon | |
# | |
# chkconfig: - 85 15 | |
# description: Redis is a persistent key-value database | |
# processname: redis-server | |
# config: /etc/redis/redis.conf | |
# config: /etc/sysconfig/redis | |
# pidfile: /var/run/redis.pid | |
# Source function library. | |
. /etc/rc.d/init.d/functions | |
# Source networking configuration. | |
. /etc/sysconfig/network | |
# Check that networking is up. | |
[ "$NETWORKING" = "no" ] && exit 0 | |
redis="/usr/local/sbin/redis-server" | |
prog=$(basename $redis) | |
REDIS_CONF_FILE="/etc/redis/redis.conf" | |
[ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis | |
lockfile=/var/lock/subsys/redis | |
start() { | |
[ -x $redis ] || exit 5 | |
[ -f $REDIS_CONF_FILE ] || exit 6 | |
echo -n $"Starting $prog: " | |
daemon $redis $REDIS_CONF_FILE | |
retval=$? | |
echo | |
[ $retval -eq 0 ] && touch $lockfile | |
return $retval | |
} | |
stop() { | |
echo -n $"Stopping $prog: " | |
killproc $prog -QUIT | |
retval=$? | |
echo | |
[ $retval -eq 0 ] && rm -f $lockfile | |
return $retval | |
} | |
restart() { | |
stop | |
start | |
} | |
reload() { | |
echo -n $"Reloading $prog: " | |
killproc $redis -HUP | |
RETVAL=$? | |
echo | |
} | |
force_reload() { | |
restart | |
} | |
rh_status() { | |
status $prog | |
} | |
rh_status_q() { | |
rh_status >/dev/null 2>&1 | |
} | |
case "$1" in | |
start) | |
rh_status_q && exit 0 | |
$1 | |
;; | |
stop) | |
rh_status_q || exit 0 | |
$1 | |
;; | |
restart|configtest) | |
$1 | |
;; | |
reload) | |
rh_status_q || exit 7 | |
$1 | |
;; | |
force-reload) | |
force_reload | |
;; | |
status) | |
rh_status | |
;; | |
condrestart|try-restart) | |
rh_status_q || exit 0 | |
;; | |
*) | |
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" | |
exit 2 | |
esac |
The best fork from this gist (currently) is: https://gist.github.com/tahajahangir/155176867afed0ff80ad
It contains this improvements:
- using pid file for stop/status/start
- support changin user (and defaults to
redis
user) - stop by sigterm (not sigquit)
I have redis v2.8.19-2 installed on my CentOS 6.5 server.
# rpm -qa | grep redis
redis-2.8.19-2.el6.art.x86_64
I have just commented out below line from stop () function and assigned retval=1
stop() {
echo -n $"Stopping $name: "
#[ -x $shut ] && $shut
retval=1
if [ -f $pidfile ]
then
# shutdown haven't work, try old way
killproc -p $pidfile $name
retval=$?
else
success "$name shutdown"
fi
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
Now, it does not throws error in stop, start, status, or restart.
Hope this helps someone.
Regards,
Vikas
This script is not working for me. Anyone know what is going on?
Starting redis-server: chown: invalid user: redis:redis' /usr/bin/dirname: extra operand
.pid'
Try `/usr/bin/dirname --help' for more information.
runuser: user redis does not exist
@tpaveyjr I used the https://gist.github.com/tahajahangir/155176867afed0ff80ad fork and had the same problem (on CentOS 6.6). Solved by adding --pidfile "/var/run/redis.pid"
to the daemon
call
This didn't quite work for me, so I tweaked it to use more generic/plain constructs: https://gist.github.com/ac-astuartkregor/5d11fe0e9f028087b66ac90423293263
This assumes you've told redis to run with daemonize yes
in the config.
tnx for useful script.
"restart" get failed error!