shell脚本监测redis服务自动重启

4 篇文章 0 订阅

服务因意外挂掉,如何保证其自动重启,继续提供服务??

shell通过while-do循环,用ps -ef|grep 检查loader进程是否正在运行,如果没有运行,则启动,这样就保证了崩溃挂掉的进程重新被及时启动。

必须注意两点:
        1、ps |grep 一个进程时必须加上其路劲,否则容易grep到错误的结果;
        2、必须用 -v 从结果中去除grep命令自身,否则结果非空


[root@tt ~]# ps -ef| grep redis
redis      678     1  0 14:34 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6378
redis      679     1  0 14:34 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root      3030  2995  0 14:35 pts/1    00:00:00 grep --color=auto redis

[root@uap ~]# ps -ef| grep "/usr/bin/redis-server 127.0.0.1:6379"| grep -v grep|wc -l
1

 

1、编写restart_redis.sh:

# ! /bin/sh

while true
do
    procnum=`ps -ef| grep "/usr/bin/redis-server 127.0.0.1:6379"| grep -v grep|wc -l`
    if [ $procnum -eq 0 ]
    then
        systemctl restart redis_log
        echo `date +%Y-%m-%d` `date +%H:%M:%S`  "systemctl restart redis_log" >> /var/log/di/restart_redis_log.log
    fi
    sleep 10
done

2、启动restart.sh 

chmod 644 restart_redis.sh

后台执行 nohup ./restart.sh &

 

crontab定时监测redis服务

1、编写restart_redis.sh

# ! /bin/sh

procnum=`ps -ef| grep "/usr/bin/redis-server 127.0.0.1:6379"| grep -v grep|wc -l`
if [ $procnum -eq 0 ]
then
    sudo systemctl restart redis_log
    echo `date +%Y-%m-%d` `date +%H:%M:%S`  "systemctl restart redis_log"  >>/var/log/restart_redis_log.log
fi

2、启动restart.sh  

chmod 644 restart_redis.sh
*/1 * * * *  su - ctdi -c /opt/../restart_redis.sh        #表示每分钟执行一次 sh 文件

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值