linux服务器控制服务启动顺序脚本

1.需求

公司部署服务,要先判断比如db服务先启动,然后再启动微服务

2.思路

  • 兼容容器与非容器架构,原理一样,无需纠结架构,领会精神。
  • 去掉docker开机自启,将检测脚本弄成开机自启(写入 /etc/rc.d/rc.local 其中rc.local需要执行权限chmod+x rc.local即可)
  • 脚本探测目标服务器的目标端口,探测到端口则启动服务(此处直接控docker本身,docker下的容器都是设置的docker服务起则容器起,所以直接控制docker服务即可)
  • 不需要可去掉记录日志功能,直接满足条件启动服务或者执行脚本都可以

3.脚本编码如下

#!/bin/bash
#Date 2023-01-12
#Author dongwn
#Version v0.0.1
#description: auto-start.sh
NACOS_HOST=192.168.1.1
NACOS_PORT=8848
Log_Path=/root/logs
SLEEP_TIME=10
flag=4
at_time=""
at_date=""

getAtTime() {
    at_time="$(date +%Y-%m-%d-%H:%M:%S) --- "
    at_date=$(date +%Y-%m-%d)
}
autoStartWebService() {
    if [ ! -d "$Log_Path" ]; then
        mkdir -p $Log_Path
    fi
    while (($flag < 5)); do
        getAtTime
        req_message=$(nc -w 1 ${NACOS_HOST} ${NACOS_PORT} </dev/null && echo "200")
        getAtTimel
        echo $req_message >${Log_Path}/"$at_date"_auto_start.log
        if [ -n "$req_message" ]; then
            getAtTime
            echo "Nacos is running" >>${Log_Path}/"$at_date"_auto_start.log
            flag+=1			
            echo "already-start" >>${Log_Path}/"$at_date"_auto_start.log
			systemctl start docker
        else
            getAtTime
            echo "Nacos is not running and please wait for Nacos starting" >>/root/logs/"$at_date"_auto_start.log
            sleep $SLEEP_TIME
        fi
    done
}
autoStartWebService

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值