1eb8dc403SDave Cobbley#!/bin/sh
2eb8dc403SDave Cobbley#
3eb8dc403SDave Cobbley### BEGIN INIT INFO
4eb8dc403SDave Cobbley# Provides:          redis-server
5eb8dc403SDave Cobbley# Required-Start:    $network
6eb8dc403SDave Cobbley# Required-Stop:     $network
7eb8dc403SDave Cobbley# Default-Start:     S 2 3 4 5
8eb8dc403SDave Cobbley# Default-Stop:      0 1 6
9eb8dc403SDave Cobbley# Short-Description: Redis, a key-value store
10eb8dc403SDave Cobbley# Description:       Redis is an open source, advanced key-value store.
11eb8dc403SDave Cobbley#                    http://redis.io
12eb8dc403SDave Cobbley### END INIT INFO
13eb8dc403SDave Cobbley
14eb8dc403SDave Cobbleytest -f /usr/bin/redis-server || exit 0
15eb8dc403SDave Cobbley
16eb8dc403SDave CobbleyARGS="/etc/redis/redis.conf"
17eb8dc403SDave Cobbley
18eb8dc403SDave Cobbleycase "$1" in
19eb8dc403SDave Cobbley    start)
20eb8dc403SDave Cobbley	echo "Starting redis-server..."
21eb8dc403SDave Cobbley        start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS
22eb8dc403SDave Cobbley	;;
23eb8dc403SDave Cobbley    stop)
24eb8dc403SDave Cobbley        echo "Stopping redis-server..."
25eb8dc403SDave Cobbley        start-stop-daemon --stop --quiet --exec /usr/bin/redis-server
26eb8dc403SDave Cobbley	;;
27eb8dc403SDave Cobbley    restart)
28eb8dc403SDave Cobbley        echo "Stopping redis-server..."
29eb8dc403SDave Cobbley        start-stop-daemon --stop --quiet --exec /usr/bin/redis-server
30*fc113eadSAndrew Geissler
31*fc113eadSAndrew Geissler        # Since busybox implementation ignores --retry arguments repeatedly check
32*fc113eadSAndrew Geissler        # if the process is still running and try another signal after a timeout,
33*fc113eadSAndrew Geissler        # efectively simulating a stop with --retry=TERM/5/KILL/5 schedule.
34*fc113eadSAndrew Geissler        waitAfterTerm=5000000 # us / 5000 ms / 5 s
35*fc113eadSAndrew Geissler        waitAfterKill=5000000 # us / 5000 ms / 5 s
36*fc113eadSAndrew Geissler        waitStep=100000 # us / 100 ms / 0.1 s
37*fc113eadSAndrew Geissler        waited=0
38*fc113eadSAndrew Geissler        start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
39*fc113eadSAndrew Geissler        processOff=$?
40*fc113eadSAndrew Geissler        while [ $processOff -eq 0 ] && [ $waited -le $waitAfterTerm ] ; do
41*fc113eadSAndrew Geissler            usleep ${waitStep}
42*fc113eadSAndrew Geissler            ((waited+=${waitStep}))
43*fc113eadSAndrew Geissler            start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
44*fc113eadSAndrew Geissler            processOff=$?
45*fc113eadSAndrew Geissler        done
46*fc113eadSAndrew Geissler        if [ $processOff -eq 0 ] ; then
47*fc113eadSAndrew Geissler            start-stop-daemon --stop --signal KILL --exec /usr/bin/redis-server
48*fc113eadSAndrew Geissler            start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
49*fc113eadSAndrew Geissler            processOff=$?
50*fc113eadSAndrew Geissler        fi
51*fc113eadSAndrew Geissler        waited=0
52*fc113eadSAndrew Geissler        while [ $processOff -eq 0 ] && [ $waited -le $waitAfterKill ] ; do
53*fc113eadSAndrew Geissler            usleep ${waitStep}
54*fc113eadSAndrew Geissler            ((waited+=${waitStep}))
55*fc113eadSAndrew Geissler            start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server
56*fc113eadSAndrew Geissler            processOff=$?
57*fc113eadSAndrew Geissler        done
58*fc113eadSAndrew Geissler        # Here $processOff will indicate if waiting and retrying according to
59*fc113eadSAndrew Geissler        # the schedule ended in a successfull stop or not.
60*fc113eadSAndrew Geissler
61eb8dc403SDave Cobbley	echo "Starting redis-server..."
62eb8dc403SDave Cobbley        start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS
63eb8dc403SDave Cobbley	;;
64eb8dc403SDave Cobbley    *)
65eb8dc403SDave Cobbley	echo "Usage: /etc/init.d/redis-server {start|stop|restart}"
66eb8dc403SDave Cobbley	exit 1
67eb8dc403SDave Cobbley	;;
68eb8dc403SDave Cobbleyesac
69eb8dc403SDave Cobbley
70eb8dc403SDave Cobbleyexit 0
71eb8dc403SDave Cobbley
72