| #!/bin/sh |
| # |
| ### BEGIN INIT INFO |
| # Provides: redis-server |
| # Required-Start: $network |
| # Required-Stop: $network |
| # Default-Start: S 2 3 4 5 |
| # Default-Stop: 0 1 6 |
| # Short-Description: Redis, a key-value store |
| # Description: Redis is an open source, advanced key-value store. |
| # http://redis.io |
| ### END INIT INFO |
| |
| test -f /usr/bin/redis-server || exit 0 |
| |
| ARGS="/etc/redis/redis.conf" |
| |
| case "$1" in |
| start) |
| echo "Starting redis-server..." |
| start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS |
| ;; |
| stop) |
| echo "Stopping redis-server..." |
| start-stop-daemon --stop --quiet --exec /usr/bin/redis-server |
| ;; |
| restart) |
| echo "Stopping redis-server..." |
| start-stop-daemon --stop --quiet --exec /usr/bin/redis-server |
| |
| # Since busybox implementation ignores --retry arguments repeatedly check |
| # if the process is still running and try another signal after a timeout, |
| # efectively simulating a stop with --retry=TERM/5/KILL/5 schedule. |
| waitAfterTerm=5000000 # us / 5000 ms / 5 s |
| waitAfterKill=5000000 # us / 5000 ms / 5 s |
| waitStep=100000 # us / 100 ms / 0.1 s |
| waited=0 |
| start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server |
| processOff=$? |
| while [ $processOff -eq 0 ] && [ $waited -le $waitAfterTerm ] ; do |
| usleep ${waitStep} |
| ((waited+=${waitStep})) |
| start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server |
| processOff=$? |
| done |
| if [ $processOff -eq 0 ] ; then |
| start-stop-daemon --stop --signal KILL --exec /usr/bin/redis-server |
| start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server |
| processOff=$? |
| fi |
| waited=0 |
| while [ $processOff -eq 0 ] && [ $waited -le $waitAfterKill ] ; do |
| usleep ${waitStep} |
| ((waited+=${waitStep})) |
| start-stop-daemon --stop --test --quiet --exec /usr/bin/redis-server |
| processOff=$? |
| done |
| # Here $processOff will indicate if waiting and retrying according to |
| # the schedule ended in a successfull stop or not. |
| |
| echo "Starting redis-server..." |
| start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS |
| ;; |
| *) |
| echo "Usage: /etc/init.d/redis-server {start|stop|restart}" |
| exit 1 |
| ;; |
| esac |
| |
| exit 0 |
| |