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 ...
随机推荐
- 关于Eclipse的一些简单设置
1.加入eclipse没有编辑的文件 例如:想用html类型打开*.jetx文件,在window-preferences-General-Content Types-Text-Html加入*.jetx ...
- VMware Workstation 虚拟机使用无线wifi上网配置
VMware Workstation 虚拟机使用无线wifi上网配置 参考文档: 转载/VMware Workstation环境下的Linux网络设置/适用于无线网络 VMware Workstati ...
- 不能ping通主机名
https://www.linuxidc.com/Linux/2017-03/142253.htm sudo apt-get install winbind , sudo apt-get instal ...
- Ajax基本语法
案例代码: $(function(){ $('#send').click(function(){ $.ajax({ type: "GET", url: "test.jso ...
- 通过HttpClient发起Get请求,获取Json数据,然后转为java数据,然后批量保存数据库;
Json转java所需Jar包: commons-beanutils-1.8.0.jar,commons-collections-3.2.1.jar,commons-lang-2.5.jar,comm ...
- poj 3687 Labeling Balls(拓补排序)
Description Windy has N balls of distinct weights from 1 unit to N units. Now he tries to label them ...
- numpy 与 matplotlib 的应用
numpy 与 matplotlib 的应用 一.库函数介绍 1. numpy库 NumPy(Numeric Python)提供了一个N维的数组类型ndarray,Numpy底层使用C语言编写,内部解 ...
- pdo的简单介绍和使用
1,PDO的定义:php data object(php数据对象); 2,连接pdo的相关参数:$dsn.$user.$pass. 其中$dsn="mysql:host=$host;dbna ...
- gitlab 之 cicd
1.使用 docker 安装 gitlab docker run -d --hostname gitlab \ --env GITLAB_OMNIBUS_CONFIG="ex ...
- git 创建项目
Command line instructions Git global setup git config --global user.name "quliangliang" gi ...