97 lines
2.7 KiB
Plaintext
97 lines
2.7 KiB
Plaintext
#!/bin/sh
|
|
#
|
|
# Simple Redis init.d script conceived to work on Linux systems
|
|
# as it does use of the /proc filesystem.
|
|
#
|
|
# description: Redis is an in memory key-value store database
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides: redis<%= @port %>
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Required-Start: <%= @required_start %>
|
|
# Required-Stop: <%= @required_stop %>
|
|
# Description: redis<%= @port %> init script
|
|
### END INIT INFO
|
|
|
|
REDISNAME=<%= @name %>
|
|
REDISPORT=<%= @port %>
|
|
<% case @platform %>
|
|
<% when 'ubuntu','debian','fedora' %>
|
|
EXEC="su -s /bin/sh -c '<%= File.join(@bin_path, 'redis-server') %> <%= @configdir %>/${REDISNAME}.conf' <%= @user %>"
|
|
<% else %>
|
|
EXEC="runuser <%= @user %> -c \"<%= File.join(@bin_path, 'redis-server') %> <%= @configdir %>/${REDISNAME}.conf\""
|
|
<% end %>
|
|
CLIEXEC=<%= File.join(@bin_path, 'redis-cli') %>
|
|
|
|
<% connection_string = String.new %>
|
|
<% if @unixsocket.nil? %>
|
|
<% connection_string << " -p #{@port}" %>
|
|
<% connection_string << " -h #{@address.respond_to?(:first) ? @address.first : @address }" if @address %>
|
|
<% else %>
|
|
<% connection_string << " -s #{@unixsocket}" %>
|
|
<% end %>
|
|
<% connection_string << " -a '#{@requirepass}'" unless @requirepass.nil? %>
|
|
|
|
PIDFILE=<%= @piddir %>/redis_${REDISNAME}.pid
|
|
|
|
if [ ! -d <%= @piddir %> ]; then
|
|
mkdir -p <%= @piddir %>
|
|
chown <%= @user %> <%= @piddir %>
|
|
fi
|
|
|
|
ulimit -n <%= @ulimit %>
|
|
|
|
case "$1" in
|
|
status)
|
|
if [ -f $PIDFILE ]
|
|
then
|
|
echo "redis$REDISNAME $PIDFILE exists, pid is $(cat $PIDFILE), should be running"
|
|
ps -p $(cat $PIDFILE) >/dev/null 2>&1
|
|
exit $?
|
|
else
|
|
echo "redis$REDISNAME $PIDFILE doesn't exist"
|
|
exit 3
|
|
fi
|
|
;;
|
|
start)
|
|
if [ -f $PIDFILE ]
|
|
then
|
|
echo "$PIDFILE exists, process is already running or crashed"
|
|
PIDNUM=`cat $PIDFILE`
|
|
PROCESS_RUNNING=`ps --no-headers -q $PIDNUM | wc -l`
|
|
if [ ! $PROCESS_RUNNING -eq 1 ]
|
|
then
|
|
echo "The PID doesn't exists, restarting it."
|
|
rm $PIDFILE
|
|
eval $EXEC
|
|
fi
|
|
else
|
|
echo "Starting Redis server..."
|
|
eval $EXEC
|
|
fi
|
|
;;
|
|
stop)
|
|
if [ ! -f $PIDFILE ]
|
|
then
|
|
echo "$PIDFILE does not exist, process is not running"
|
|
else
|
|
PID=$(cat $PIDFILE)
|
|
echo "Stopping ..."
|
|
|
|
<%= "$CLIEXEC #{connection_string} save" if @shutdown_save %>
|
|
$CLIEXEC <%= connection_string %> shutdown
|
|
|
|
while [ -x /proc/${PID} ]
|
|
do
|
|
echo "Waiting for Redis to shutdown ..."
|
|
sleep 1
|
|
done
|
|
echo "Redis stopped"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Please use start or stop as first argument"
|
|
;;
|
|
esac
|