while true 死循环判断端口按顺序启动应用
需求: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 死循环判断端口按顺序启动应用的更多相关文章
- Docker-compose编排微服务顺序启动
一.概述 docker-compose可以方便组合多个 docker 容器服务, 但是, 当容器服务之间存在依赖关系时, docker-compose 并不能保证服务的启动顺序.docker-comp ...
- arm:启动代码判断是从nand启动还是从norflash启动,拷贝程序到内存的过程
一.nand启动和nor启动:[1] CPU从0x00000000位置开始运行程序. 1.nand启动: 如果将S3C2440配置成从NANDFLASH启动(将开发板的启动开关拔到nand端,此时OM ...
- while True 死循环
while True 死循环示例: count = 0 #给count设置变量为0 while True: count += 1 #每循环一次,count+1 : count += 1 等同于coun ...
- Linux开机启动顺序启动顺序及配置开机启动
Linux:开机启动顺序启动顺序及配置开机启动 开机启动顺序 1.加载内核 2.启动 init(/etc/inittab) pid=1 3.系统初始化 /etc/rc.d/rc.sysinit 4.运 ...
- c# 线程启动while(true) 死循环,里边的return导致线程退出情况,查错
写了一个线程 线程下启动了一个循环 while(true) { 里边有个判断 如果为空不操作, 有余这个线程是后加的,老程序里边因为有个return没关注,导致线程退出而不能不听的监控 } 线程启动一 ...
- Windows server利用批处理脚本判断端口, 启动tomcat
win server服务器上面的tomcat老是不定时挂掉, 于是利用定时操作脚本判断tomcat80端口是否在运行, 如果运行则放过, 如果down掉就启动tomcat,解决tomcat不定时挂掉导 ...
- aix7安装was7、打补丁、更改访问端口、手动启动was、配置was7、部署项目
1:准备工作 首先了解下我们下面即将用到的aix命令,以及安装包.补丁安装工具.补丁 was7的安装包以及补丁工具都是压缩包形式并且以.tar.gz结尾的 安装包在800MB左右,通常为****_w ...
- 【问题解决:未找到端口号】启动报错Circular placeholder reference 'server.port' in property definitions
问题描述: 启动spring boot项目时报错:Circular placeholder reference 'server.port' in property definitions 解决过程: ...
- Android笔记——判断程序是否第一次启动
public class Welcome extends Activity { private final long SPLASH_LENGTH = 2000; Handler handler = n ...
随机推荐
- Sublime text 2/3 [Decode error - output not utf-8] 完美解决方法
原文链接 http://blog.csdn.net/bbdxf/article/details/25594703 [Decode error - output not utf-8]或者[Decode ...
- 【Java】学习笔记(1)
Java数据类型: 基本数据类型:(变量在栈中)数值型:byte(1个字节) short(2个字节) int(四个字节) long(8个字节) ,float(4字节) double(8字节) 字符型: ...
- 基于TeamCity的asp.net mvc/core,Vue 持续集成与自动部署
一 Web Server(Windows)端的配置 1.配置IIS,重要的是管理服务 1.1 配置FTP(前端NPM项目需要) 该步骤略,如果是在阿里云ESC上,需要开启端口21(用来FTP认证握手) ...
- Java整理
基础篇 1. 面向对象 2. Java平台 3. 值传递 4. 封装.继承.多态 5. 基本数据类型 6. Java 装箱和拆箱 7. String 8. Java关键字 9. 集合 ...
- CentOS7配置阿里云源
cd /etc/yum.repos.d/ mkdir backup mv CentOS-* backup/ wget -O /etc/yum.repos.d/CentOS-Base.repo http ...
- String工具类
String工具类 问题描述 MAVEN依赖 代码成果 问题描述 很多时候我们需要对字符串进行很多固定的操作,而这些操作在JDK/JRE中又没有预置,于是我们想到了apache-commons组件,但 ...
- [转]dd命令、cp命令详解+dd命令、cp命令对比 ---delong
出处:http://blog.csdn.net/sun_app/article/details/18263299 1.dd命令详解 1)中文man手册dd的解释 NAME dd - 转换和 ...
- Exp3 免杀原理与实践 20154320 李超
基础知识 如何检测出恶意代码 基于特征码的检测:分析指令的统计特性.代码的结构特性等.如果一个可执行文件(或其他运行的库.脚本等)拥有一般恶意代码所通有的特征(开启后门等)则被认为是恶意代码 启发式恶 ...
- EF学习笔记(十二):EF高级应用场景
学习总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上篇链接:EF学习笔记(十一):实施继承 本篇原文链接:Advanced Entity Framework Scenari ...
- Linux的内存机制(转载)
今天我们来谈谈Linux的内存机制. 首先我们理一下概念 一.什么是linux的内存机制? 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成, ...