【springboot】之利用shell脚本优雅启动,关闭springboot服务
springbot开发api接口服务,生产环境中一般都是运行独立的jar,在部署过程中涉及到服务的优雅启动,关闭,
springboot官方文档给出的有两种方式,
1、使用http shutdown
2、注册为系统服务 https://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#deployment-service
第一种不方便,麻烦,需要配置各种安全策略,无法集成自动化部署工具
第二种需要建立软连接,可控性不够
尤其是集成自动化部署工具之后,使用shell脚本是不错的选择
- #!/bin/sh
- ## java env
- export JAVA_HOME=/usr/local/jdk/jdk1.8.0_101
- export JRE_HOME=$JAVA_HOME/jre
- API_NAME=api
- JAR_NAME=$API_NAME\.jar
- #PID 代表是PID文件
- PID=$API_NAME\.pid
- #使用说明,用来提示输入参数
- usage() {
- echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
- exit 1
- }
- #检查程序是否在运行
- is_exist(){
- pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
- #如果不存在返回1,存在返回0
- if [ -z "${pid}" ]; then
- return 1
- else
- return 0
- fi
- }
- #启动方法
- start(){
- is_exist
- if [ $? -eq "" ]; then
- echo ">>> ${JAR_NAME} is already running PID=${pid} <<<"
- else
- nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
- echo $! > $PID
- echo ">>> start $JAR_NAME successed PID=$! <<<"
- fi
- }
- #停止方法
- stop(){
- #is_exist
- pidf=$(cat $PID)
- #echo "$pidf"
- echo ">>> api PID = $pidf begin kill $pidf <<<"
- kill $pidf
- rm -rf $PID
- sleep 2
- is_exist
- if [ $? -eq "" ]; then
- echo ">>> api 2 PID = $pid begin kill -9 $pid <<<"
- kill -9 $pid
- sleep 2
- echo ">>> $JAR_NAME process stopped <<<"
- else
- echo ">>> ${JAR_NAME} is not running <<<"
- fi
- }
- #输出运行状态
- status(){
- is_exist
- if [ $? -eq "" ]; then
- echo ">>> ${JAR_NAME} is running PID is ${pid} <<<"
- else
- echo ">>> ${JAR_NAME} is not running <<<"
- fi
- }
- #重启
- restart(){
- stop
- start
- }
- #根据输入参数,选择执行对应方法,不输入则执行使用说明
- case "$1" in
- "start")
- start
- ;;
- "stop")
- stop
- ;;
- "status")
- status
- ;;
- "restart")
- restart
- ;;
- *)
- usage
- ;;
- esac
- exit 0
【springboot】之利用shell脚本优雅启动,关闭springboot服务的更多相关文章
- linux环境下编写shell脚本实现启动停止tomcat服务
第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat ...
- 利用shell脚本个性化运行jar任务
利用shell脚本可以个性化运行jar任务,废话不多说,直接上代码: #!/bin/bash APP_PATH=/root/bigdata/jars/data_migration_from_sqlse ...
- 利用shell脚本实现计划任务功能 V1.2
2013.05.10 mytask 1.2 主程序休眠时间分成若干小的时间片断分段休眠,避免长时间的休眠不能及时响应系统信号. 2013.05.07 mytask 1.1 昨天发布了mytask1. ...
- 利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下
背景是这样的:网站一开始访问量比较小,大家就把所有的图片文件上传到一个目录下(比如是/data/images/).后来访问量大了,图片也多了,这样就影响读取效率.所以有个这样的需求,把这些个图片文件移 ...
- 利用shell脚本去备份幸运28源码搭建下载所指定的数据库
#! /bin/bash幸运28源码搭建下载Q[115288oo99]logintool=/home/yx/server/mysql/mysql/bin/mysqldumptool=/home/yx/ ...
- 利用shell脚本将Oracle服务器中数据定时增量刷新到ftp服务器中
现有需求:将oracle数据库中的数据准实时同步至某ftp服务器中,以便前端应用能定时从ftp服务器目录中取增量数据 方法:将加工脚本写为存储过程,然后利用shell脚本执行该存储过程并将增量数据导出 ...
- shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...
- Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务
文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...
- 启动/关闭oracle服务有三种方式
启动oracle服务有三种方式: 1 从控制面板 2 使用MS-DOS命令 3 通过Oracle Administration Assistant for WindowsNT -通过控制面板启动ora ...
随机推荐
- 编译Thrift支持golang
本文已经是很久以前的文章了,也不知道新版本thrift如何 Thrift是一个跨语言的服务部署框架,Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译 ...
- HihoCoder - 1801 :剪切字符串 (置换与逆序对)
Sample Input 6 5 11 Sample Output 6 小Hi有一个长度为N的字符串,这个字符串每个位置上的字符两两不同.现在小Hi可以进行一种剪切操作: 选择任意一段连续的K个字符, ...
- this和super用法详解
这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this ...
- c标签取数组中的对象值的2种方法
1:循环遍历 <c:forEach items="${partsDeltailsList}" var="var" varStatus="vs&q ...
- sparkStreaming获取kafka数据(java版本)
环境 spark-2.2.0 kafka_2.11-0.10.0.1 jdk1.8 配置好jdk,创建项目并将kafka和spark的jar包添加到项目中,除此之外还需要添加spark-streami ...
- 一天掌握python爬虫
一天掌握python爬虫日记: (小爬虫,NO 我们是大蜘蛛 ) 数据抓取: requests:requests 的底层实现其实就是 urllib开源地址:https://github.com/ken ...
- PHP黑魔法(该篇文章转自:http://www.91ri.org/12634.html 目的是作为自己的笔记方便查找)
那些年我们学过的PHP黑魔法 作者:Matrix_ling 序 这里必须得说一下==和===这俩货的重要性.==是比较运算,它不会去检查条件式的表达式的类型===是恒等,它会检查查表达式的值与类型是否 ...
- CH3B16 魔法珠
题意 3B16 魔法珠 0x3B「数学知识」练习 描述 Freda和rainbow是超自然之界学校(Preternatural Kingdom University,简称PKU)魔法学院的学生.为了展 ...
- egg 官方文档之:框架扩展(Application、Context、Request、Response、Helper的访问方式及扩展)
地址:https://eggjs.org/zh-cn/basics/extend.html Application app 对象指的是 Koa 的全局应用对象,全局只有一个,在应用启动时被创建. 访问 ...
- ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍
在ASP.NET AJAX Beta2中,UpdateProgress控件已经从“增值”CTP中移到了ASP.NET AJAX核心中.以下两篇关于UpdateProgress的文章基本翻译自ASP.N ...