Redis集群在linux下开机自启动xshell命令 【原创】

touch redis_course

chmod +x redis_course

chkconfig --add redis_course

chkconfig --list

 

#!/bin/sh

 

# Simple Redis init.d script conceived to work on Linux systems

# as it does use of the /pro filesystem.

# chkconfig:2345 90 10

# description:Redis is a persistent key-value database

 

# reference : http://blog.sina.com.cn/s/blog_86952de90102wmzf.html

# https://blog.csdn.net/kai_1215/article/details/78111237

 

# 不知这两段有何作用,也可不用引用

PATH=/usr/local/bin:/sbin:/usr/bin:/bin

export PATH

 

# 6379 直接用/redis-server 或 /redis-cli

# 6380 | 6381 都拼接 -6380 | -6381 再拼接 /redis-server 或 /redis-cli

EXEC=/usr/local/redis

CLIEXEC=/usr/local/redis

 

CONF="/redis.conf"

SENTINEL_CONF="/sentinel.conf"

 

# $1代表的是传进来的第一个参数

startFunction()

{

PID = `lsof -F p -i:$1 -sTCP:LISTEN | cut -b 2-`

# 判断端口是否被占用 [下面启动可以合并,但是为了区分是重启还是正常启动。kill可能会失败,这里可能需要优化]

if [ "$PID" != "" ];then

# 如果端口被占用就杀死进程,重新启动新的进程[可能会出现被占用的端口并不是当前待启动的项目情况,这点需要注意端口自定义使用规则问题]

stopFunction $1

# 判断9379为特殊处理

if [ $1 -eq 6379 ]; then

$EXEC/redis-server $EXEC$CONF && $EXEC/redis-server $EXEC$SENTINEL_CONF --sentinel &

sleep 1

else

$EXEC-$1/redis-server $EXEC-$1$CONF && $EXEC-$1/redis-server $EXEC-$1$SENTINEL_CONF --sentinel &

sleep 1

fi

# 判断上一个是否执行成功

if [ $? -eq 0 ]; then

echo "-----> The $1 port is occupied and the restart is successful <-----"

else

echo "-----> The $1 port is occupied and the restart is failed <-----"

fi

else

# 判断9379为特殊处理

if [ $1 -eq 6379 ]; then

$EXEC/redis-server $EXEC$CONF &

sleep 1

$EXEC/redis-server $EXEC$SENTINEL_CONF --sentinel &

sleep 1

else

$EXEC-$1/redis-server $EXEC-$1$CONF &

sleep 1

$EXEC-$1/redis-server $EXEC-$1$SENTINEL_CONF --sentinel &

sleep 1

fi

# 判断上一个是否执行成功

if [ $? -eq 0 ]; then

echo "-----> The $1 port starting success <-----"

else

echo "-----> The $1 port starting failed <-----"

fi

fi

}

 

stopFunction()

{

# 杀死redis本身的进程

pId=`lsof -F p -i:$1 -sTCP:LISTEN | cut -b 2-`

# 判断端口是否被占用

if [ "$pId" == "" ];then

echo "-----> The $1 port not started <-----"

else

# 如果端口被占用就杀死进程,重新启动新的进程[可能会出现被占用的端口并不是当前待启动的项目情况,这点需要注意端口自定义使用规则问题]

kill -9 $pId;

# 判断上一个是否执行成功

if [ $? -eq 0 ]; then

echo "-----> The $1 port kills successfully <-----"

else

echo "-----> The $1 port kill failed <-----"

fi

fi

# 杀死redis集群下的进程

jq_pId=`lsof -F p -i:2$1 -sTCP:LISTEN | cut -b 2-`

# 判断端口是否被占用

if [ "$jq_pId" == "" ];then

echo "-----> The 2$1 port not started <-----"

else

# 如果端口被占用就杀死进程,重新启动新的进程[可能会出现被占用的端口并不是当前待启动的项目情况,这点需要注意端口自定义使用规则问题]

kill -9 $jq_pId;

# 判断上一个是否执行成功

if [ $? -eq 0 ]; then

echo "-----> The 2$1 port kills successfully <-----"

else

echo "-----> The 2$1 port kill failed <-----"

fi

fi

}

 

case "$1" in

start)

if [ "$2" == "" ];then

min=6379

max=6381

while [ $min -le $max ]

do

# https://blog.csdn.net/holandstone/article/details/49818047 感谢这篇博文过滤LISTEN

# echo "=======================>"$min

# View port enabled status

PORT_STATUS=`netstat -an|grep LISTEN|grep :$min`

# Prompt if the port exists

if [ "$PORT_STATUS" == "" ]; then

startFunction $min

# echo "-----> $min Port started successfully <-----"

else

echo "-----> The $min port is running <-----"

fi

# 循环数累加

min=`expr $min + 1`

done

else

# 指定性启动

PORT_STATUS=`netstat -an|grep LISTEN|grep :$2`

# Prompt if the port exists

if [ "$PORT_STATUS" == "" ]; then

startFunction $2

# echo "-----> $2 Port started successfully <-----"

else

echo "-----> The $2 port is running <-----"

fi

fi

;;

stop)

if [ "$2" == "" ];then

min=6379

max=6381

# redis端口全部停止

while [ $min -le $max ]

do

stopFunction $min

min=`expr $min + 1`

done

else

# 指定性端口停止

stopFunction $2

fi

;;

restart)

"$0" stop && "$0" start

;;

*)

echo " ***** Please use start or stop or restart as first argument *** "

echo " -----> start : service redis start [6379|6380|6381] <----- "

echo " -----> stop : service redis stop [6379|6380|6381] <----- "

echo " -----> restart : service redis restart <----- "

;;

esac

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Linux 集群上设置 Redis 开机自启动,可以按照以下步骤进行操作: 1. 打开 Redis 配置文件 redis.conf,可以使用 vim 命令进行编辑:`vim /etc/redis/redis.conf`。 2. 找到 daemonize 配置项,将其设置为 yes:`daemonize yes`。这个配置项的作用是让 Redis 以守护进程的方式运行。 3. 保存并退出 redis.conf 文件。 4. 在集群中的每台机器上创建一个 Redis 启动脚本,可以使用以下命令来创建:`sudo vim /etc/init.d/redis-server`。 5. 将以下脚本内容复制到 redis-server 文件中: ``` #!/bin/sh # # redis-server Startup script for Redis server # # chkconfig: - 58 74 # description: Redis is a persistent key-value database # processname: redis-server # config: /etc/redis/redis.conf # pidfile: /var/run/redis.pid REDISPORT=6379 EXEC=/usr/bin/redis-server CLIEXEC=/usr/bin/redis-cli PIDFILE=/var/run/redis.pid CONF="/etc/redis/redis.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF & fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping Redis server..." $CLIEXEC -p $REDISPORT 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 exit 0 ``` 6. 保存并退出 redis-server 文件,并赋予该文件执行权限:`chmod +x /etc/init.d/redis-server`。 7. 使用 chkconfig 命令Redis 启动脚本添加到开机启动项中:`sudo chkconfig --add redis-server`。 8. 验证 Redis 是否已经设置为开机自启动:`sudo chkconfig --list redis-server`。 以上就是在 Linux 集群上设置 Redis 开机自启动的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值