需求:spring微服务应用启动较慢并且要求一个应用启完才能启第二个应用。

思路:加了个while true 死循环判断端口启动了才启下一个应用。

执行方式:/appupgrade/spring_cloud/pay.sh xxx

#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_111
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
BUCKUP_DIR=/fs01/backup/spring-cloud/pay/$(date +%Y%m%d%H%M)
PAYPRE_DIR=/fs01/spring-cloud/paypre
APPLY_DIR=/fs01/spring-cloud/pay/acc-apply
SETTLE_DIR=/fs01/spring-cloud/pay/acc-settle
FILE=$1
if [ ! -f ${APPLY_DIR}/${FILE} ];then
echo "/tmp1/${FILE} This directory does not exist.Please check it!"
exit 0
fi
echo "开始更新应用,请勿操作等待更新完毕!!"
ps aux|grep pay-front|grep -v grep |awk '{print $2}'|xargs kill -9
rm -fr ${PAYPRE_DIR}/app.pid
sleep 10
ps aux|grep acc-apply|grep -v grep |awk '{print $2}'|xargs kill -9
rm -fr ${APPLY_DIR}/app.pid
sleep 3
ps aux|grep acc-settle|grep -v grep |awk '{print $2}'|xargs kill -9
rm -fr ${SETTLE_DIR}/app.pid \/bin/cp /tmp1/$1 ${APPLY_DIR}
[ -z ${BUCKUP_DIR} ] || /bin/mkdir -p ${BUCKUP_DIR}
cd ${APPLY_DIR}
tar -cf ${BUCKUP_DIR}/apply.tar BOOT-INF/ META-INF/
cd ${SETTLE_DIR}
tar -cf ${BUCKUP_DIR}/settle.tar BOOT-INF/ META-INF/
#更新acc-apply
cd ${APPLY_DIR}/BOOT-INF/classes/
/bin/mv bootstrap.yml db.properties paylink.properties ../
cd ${APPLY_DIR}
/usr/java/jdk1.8.0_111/bin/jar -xf ${APPLY_DIR}/${FILE}
cd ${APPLY_DIR}/BOOT-INF/classes/
\/bin/mv ../bootstrap.yml ../db.properties ../paylink.properties ./
/bin/chown -R tomcat8:tomcatg /fs01/spring-cloud/pay/acc-apply
cd /fs01/spring-cloud/pay/acc-apply/ && ./start.sh
sleep 3
while true
do
ss -lntp|grep 8761 >>/dev/null
if [ $? = 0 ];then
echo "acc-apply更新成功!!"
break;
fi
done
#更新acc-settle
\/bin/cp ${APPLY_DIR}/${FILE} ${SETTLE_DIR}
cd ${SETTLE_DIR}/BOOT-INF/classes/
/bin/mv bootstrap.yml db.properties paylink.properties ../
cd ${SETTLE_DIR}
/usr/java/jdk1.8.0_111/bin/jar -xf ${SETTLE_DIR}/${FILE}
cd ${SETTLE_DIR}/BOOT-INF/classes/
\/bin/mv ../bootstrap.yml ../db.properties ../paylink.properties ./
/bin/chown -R tomcat8:tomcatg /fs01/spring-cloud/pay/acc-settle
while true
do
ss -lntp|grep 8761 >>/dev/null
if [ $? = 0 ];then
cd /fs01/spring-cloud/pay/acc-settle/ && ./start.sh
break;
fi
done
while true
do
ss -lntp|grep 8762 >>/dev/null
if [ $? = 0 ];then
echo "acc-settle更新成功!!"
cd /fs01/spring-cloud/paypre/ && ./start.sh
break;
fi
done
while true
do
ss -lntp|grep 8763 >>/dev/null
if [ $? = 0 ];then
echo "全部更新完毕,请检查应用日志是否正常!!"
break;
fi
done
mv /tmp1/${FILE} /tmp1/${FILE}_$(date +%Y%m%d%H%M)

while true 死循环判断端口按顺序启动应用的更多相关文章

  1. Docker-compose编排微服务顺序启动

    一.概述 docker-compose可以方便组合多个 docker 容器服务, 但是, 当容器服务之间存在依赖关系时, docker-compose 并不能保证服务的启动顺序.docker-comp ...

  2. arm:启动代码判断是从nand启动还是从norflash启动,拷贝程序到内存的过程

    一.nand启动和nor启动:[1] CPU从0x00000000位置开始运行程序. 1.nand启动: 如果将S3C2440配置成从NANDFLASH启动(将开发板的启动开关拔到nand端,此时OM ...

  3. while True 死循环

    while True 死循环示例: count = 0 #给count设置变量为0 while True: count += 1 #每循环一次,count+1 : count += 1 等同于coun ...

  4. Linux开机启动顺序启动顺序及配置开机启动

    Linux:开机启动顺序启动顺序及配置开机启动 开机启动顺序 1.加载内核 2.启动 init(/etc/inittab) pid=1 3.系统初始化 /etc/rc.d/rc.sysinit 4.运 ...

  5. c# 线程启动while(true) 死循环,里边的return导致线程退出情况,查错

    写了一个线程 线程下启动了一个循环 while(true) { 里边有个判断 如果为空不操作, 有余这个线程是后加的,老程序里边因为有个return没关注,导致线程退出而不能不听的监控 } 线程启动一 ...

  6. Windows server利用批处理脚本判断端口, 启动tomcat

    win server服务器上面的tomcat老是不定时挂掉, 于是利用定时操作脚本判断tomcat80端口是否在运行, 如果运行则放过, 如果down掉就启动tomcat,解决tomcat不定时挂掉导 ...

  7. aix7安装was7、打补丁、更改访问端口、手动启动was、配置was7、部署项目

    1:准备工作  首先了解下我们下面即将用到的aix命令,以及安装包.补丁安装工具.补丁 was7的安装包以及补丁工具都是压缩包形式并且以.tar.gz结尾的 安装包在800MB左右,通常为****_w ...

  8. 【问题解决:未找到端口号】启动报错Circular placeholder reference 'server.port' in property definitions

    问题描述: 启动spring boot项目时报错:Circular placeholder reference 'server.port' in property definitions 解决过程: ...

  9. Android笔记——判断程序是否第一次启动

    public class Welcome extends Activity { private final long SPLASH_LENGTH = 2000; Handler handler = n ...

随机推荐

  1. spring jar包解读(转)

    作者:http://www.cnblogs.com/leehongee/archive/2012/10/01/2709541.html spring.jar 是包含有完整发布模块的单个jar 包.但是 ...

  2. 浅谈 drop、truncate和delete的区别

    (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独 ...

  3. ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。

    主要思路: 通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*10再对除数取余得到新的余数,并记录下来,知道出现的余数之前出现过,此时小数开始循环. 例如: 假设   ->     a ...

  4. oracle 数据定义语言(DDL)语法

    DDL语言包括数据库对象的创建(create).删除(drop)和修改(alter)的操作 1.创建表语法 create table table_name( column_name datatype  ...

  5. docker私库Harbor部署(转载)

    系统环境 centos7.3docker-ce docker version: 18.03.0docker-compose version: 1.21.0 Install Docker CE 安装依赖 ...

  6. Django路由分配及渲染

    一.url路由分配 1.url配置的本质是将浏览器传递过来的路径和参数与服务器中的视图向匹配,并返回浏览器相应的视图函数. 2.url路径path规则 path(route, view, kwargs ...

  7. VS2017 带参数启动调式程序

    有些程序,比如FFPlay,需要传递命令行参数才能运行想要的功能,比如字幕, ffplay -vf subtitles=mv.mkv mv.mkv 参数是 -vf subtitles=mv.mkv m ...

  8. 【慕课网实战】五、以慕课网日志分析为例 进入大数据 Spark SQL 的世界

    提交Spark Application到环境中运行spark-submit \--name SQLContextApp \--class com.imooc.spark.SQLContextApp \ ...

  9. mpvue 初体验之改写车标速查小程序

    前文 说到我开发了一个简单的小程序叫做 车标速查(代码以及二维码详见 这里),本文简单讲讲如何将这个小程序转为 mpvue 开发(最终 成果 ) mpvue 官网的 文档 真的是非常简单,不,应该说是 ...

  10. 单个div充满屏幕的CSS方法

    1.通过定位实现 <style> *{ margin: 0; padding: 0; } div{ width:100%; height: 100%; background: yellow ...