Redis启停脚本

目录

1.概述

解决部分老系统,如Centos6上启停Redis服务的问题。

2.Redis自带脚本

  • Redis安装包下载
bash 复制代码
wget http://download.redis.io/releases/redis-6.2.9.tar.gz
  • 脚本存放在解压后安装包路径下utils目录中,redis_init_script与redis_init_script.tpl两个文件
bash 复制代码
[root@centos utils]# pwd
# 请将/home/redis-6.2.9替换为安装包解压路径
/home/redis-6.2.9/utils
# 查看服务管理脚本
[root@centos utils]# ll redis_init_script*
-rwxrwxr-x 1 root root 1352 5月  19 14:12 redis_init_script
-rwxrwxr-x 1 root root 1047 5月  19 14:12 redis_init_script.tpl

3.Redis安装

参见我另一篇笔记: Redis单例部署

4.修改Redis默认脚本

bash 复制代码
vim /etc/init.d/redis-server
bash 复制代码
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO

# 服务主目录
REDIS_HOME=/usr/local/redis
# 服务端口
REDISPORT=6379
# 服务端程序路径
EXEC=${REDIS_HOME}/bin/redis-server
# 客户端程序路径
CLIEXEC=${REDIS_HOME}/bin/redis-cli

# PID文件路径,注意与redis.conf配置文件中保持一致
PIDFILE=/var/run/redis/redis_${REDISPORT}.pid
# 配置文件路径
CONF="${REDIS_HOME}/redis.conf"

# 定义运行服务的普通用户,需要提前创建
USER="redis"
#if [ `whoami` != "${USER}" ]; then
#        exec su - "${USER}"
#fi
# 定义sudo命令
CMD="/usr/bin/sudo -u ${USER}"


case "$1" in
    # 启动服务
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                # 使用普通用户启动服务
                exec $CMD $EXEC $CONF
        fi
        ;;
    # 停止服务
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                #$CLIEXEC -p $REDISPORT shutdown
                # 因为Redis设置了密码,所以修改停止服务命令。
                /bin/kill -s TERM ${PID}
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                /bin/rm -rf $PIDFILE
                echo "Redis stopped"
        fi
        ;;
    # 服务状态
    status)
        if [ ! -f $PIDFILE ]
        then
            echo 'Redis is not running'
        else
            PID=$(cat $PIDFILE)
            echo "Redis is running ($PID)"
        fi
        ;;
    # 重启服务
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

5.注册为Service

检验脚本/etc/init.d/redis-server

  • 确保程序和配置文件路径正确
  • 确保端口是redis服务监听端口(会使用pid文件,pid文件与redis.conf中配置需一致)。

脚本添加执行权限

bash 复制代码
chmod +x /etc/init.d/redis-server

添加到redis-server服务

bash 复制代码
chkconfig --add redis-server

启用redis-server服务

bash 复制代码
# chkconfig redis-server on

6.功能验证

启动服务

bash 复制代码
[root@centos utils]# service redis-server start
Starting Redis server...
bash 复制代码
# 服务使用普通用户(redis)运行
[root@centos init.d]# ps -ef | grep 6379 | grep -v grep
redis    12530     1  0 18:54 ?        00:00:00 /usr/local/redis/bin/redis-server *:6379     

服务状态

bash 复制代码
[root@centos utils]# service redis-server status
Redis is running (11304)
bash 复制代码
[root@centos utils]# netstat -nltp | grep 6379 | grep -v grep
tcp        0      0 0.0.0.0:6379               0.0.0.0:*                   LISTEN      11304/redis-server  
tcp        0      0 :::6379                    :::*                        LISTEN      11304/redis-server  

重启服务

bash 复制代码
[root@centos utils]# service redis-server restart
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...

停止服务

bash 复制代码
[root@centos utils]# service redis-server stop
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
相关推荐
南山十一少11 分钟前
Spring Security+JWT+Redis实现项目级前后端分离认证授权
java·spring·bootstrap
月光水岸New2 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6752 小时前
数据库基础1
数据库
我爱松子鱼2 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
希忘auto4 小时前
详解Redis在Centos上的安装
redis·centos
人间打气筒(Ada)4 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231114 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql