shell通过进程来判断多个redis服务是否都启动

动脚本后,不知redis服务是否全部启动成功,查询了shell中许多判断自启动是否执行成功的方法,经测试都失败。最终发现多种方法只能判断shell语句脚本是否执行成功,并不能来判断redis服务。我开始思考,先去执行自启脚本,然后去判断进程是否存在这个进程,这样不就可以知道是否自启成功。通过下面的代码:

name=“redis-server”

#通过服务名来判断服务器是否有这个进程

if test $( pgrep -f $name | wc -l ) -eq 0

then

echo “bucunzai”

else

echo “cunzai”

fi

成功的判断了redis服务是否执行成功,但是我的服务器有多个redis对象,多个redis服务,服务名称相同,只是端口不同,这样则只要启动成功一个或多个就会认为全部启动成功。通过查询有可以通过进程pid号来判断进程是否存在,但redis服务未启动之前我们谁也不知道它的进程pid是多少。最终我想到通过字符串来判断所有的redis服务是否全部启动成功代码如下:

#服务名(尽量写详细)

servername="/usr/local/redis-4.0.8/src/redis-server"

#每个redis服务端口,每一个端口的配置文件启动一个redis服务

ports=(‘6371’ ‘6373’ ‘6374’ ‘6375’ ‘6376’ ‘6378’ ‘6379’ ‘6380’ ‘6381’)

#获取所有的redis服务的进程信息

redis=ps -aux | grep $servername

echo $redis

#判断端口是否存在于redis服务信息中

for port in ${ports[*]};do

#这句话的意思是判断port这个字符串是否在redis这个字符串中

if [[ $redis =~ $port ]]

then

echo $port

else

echo “no”

fi

done

最终解决了这个问题
————————————————
版权声明:本文为CSDN博主「lkwan123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lkwan123/article/details/79663968

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值