用于在Jenkins将jar发送到目标节点之后的部署操作, 包含deploy, start, stop, restart功能. 在deploy时会自动备份原jar至指定目录

# Please define the absolute path of tomcat instance
JAVA_HOME=/opt/java/jdk1.8.0_101
RUN_BASE=/home/tomcat/run
BUILD_FOLDER=/home/tomcat/builds
ARCHIVE_FOLDER=/home/tomcat/archives
JAVA_OPTS="-server -Xms512m -Xmx512m -XX:MaxNewSize=256m -Djava.awt.headless=true" start() {
echo -n "[$(date +%Y%m%d-%H%M%S)] Start: " case "$1" in
some-common.jar)
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -Djava.awt.headless=true"
echo "Use Xms1024m JAVA_OPTS"
;;
*)
echo "Use default JAVA_OPTS"
esac pid=`ps -ef|grep ${JAR_FILE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
if [ -z ${pid} ] ; then
echo $1 port:$2
nohup ${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar ${JAR_FILE} --server.port=$2 >/dev/null 2>&1 &
else
echo $1' is running at pid: '${pid}
fi
} stop() {
if [ -z $1 ]; then
exit 1
fi echo -n "[$(date +%Y%m%d-%H%M%S)] Stop: "
pid=`ps -ef|grep ${JAR_FILE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
if [ -z $pid ] ; then
echo $1' is not running'
else
echo $1' is running at pid:'${pid}
kill $pid
sleep 5
fi pid=`ps -ef|grep ${JAR_FILE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
if [ -z $pid ] ; then
echo 'Done'
else
echo 'Still running, now killing with pid:'${pid}
ps -ef|grep ${JAR_FILE}|grep -v 'grep'|grep 'java'|awk '{print $2}'|xargs kill -s 9
fi
} restart() {
stop $1
start $1 $2
} deploy() {
if [ -z $2 ]; then
echo $"Usage: $0 $1 [port]"
exit 2
fi
# -f filename - Check for regular file existence not a directory
[ -f ${BUILD_FOLDER}/$1 ] || exit 1 stop $1
df -h
echo '' local BACKUP_FILENAME=$1.$(date +%Y%m%d-%H%M)
echo -n "[$(date +%Y%m%d-%H%M%S)] Deploy: "
echo -n "backup ${BACKUP_FILENAME}... "
mv ${JAR_FILE} ${ARCHIVE_FOLDER}/${BACKUP_FILENAME}
echo -n "copy... "
cp -f ${BUILD_FOLDER}/$1 ${RUN_BASE}/
echo 'done' start $1 $2
} # -z tests for a null string
if [ -z $1 ]; then
echo $"Usage: $0 {start|stop|restart|deploy} [some.jar] [port]"
exit 2
elif [ -z $2 ]; then
echo $"Usage: $0 {start|stop|restart|deploy} [some.jar] [port]"
exit 2
fi JAR_FILE=${RUN_BASE}/$2
# -e Check for file existence regardless of type (node, directory, socket)
[ -e ${JAR_FILE} ] || exit 1 case "$1" in
start)
if [ -z $3 ]; then
echo $"Usage: $0 $1 [some.jar] [port]"
exit 2
fi
$1 $2 $3
;;
stop)
$1 $2
;;
restart)
$1 $2 $3
;;
deploy)
if [ -z $3 ]; then
echo $"Usage: $0 $1 [some.jar] [port]"
exit 2
fi
$1 $2 $3
;;
*)
echo $"Usage: $0 {start|stop|restart|deploy} $2 [port]"
exit 2
esac

  

用于Spring Boot Jar部署的shell脚本的更多相关文章

  1. spring boot jar 部署linux服务器

    用命令启动spring boot 项目,一旦终端命令窗口关闭,项目也就关闭了,所以我们采用脚本的方式来运行jar 正常命令 java -jar xxx.jar 脚本启动,vim 创建 start.sh ...

  2. Spring boot centos部署启动停止脚本

    原文地址:http://www.cnblogs.com/skyblog/p/7243979.html 使用脚本启动和关闭服务,centos下的脚本启动和关闭可以如下: start(){ now=`da ...

  3. spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar)

    spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar) 如果使用的run as – java a ...

  4. 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行

    实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...

  5. 玩转spring boot——war部署

    前言 之前部署spring boot应用是通过直接输入命令“java -jar”来实现的.而有些情况,由于部署环境的制约,只能把项目从jar转换成war才能部署,如新浪云sae的java环境容器.那怎 ...

  6. spring boot: 热部署spring-boot-devtools

    spring boot: 热部署spring-boot-devtools 1引入spring-boot-devtools依赖包 <!-- spring boot devtools 热部署 --& ...

  7. 【spring boot】【redis】spring boot基于redis的LUA脚本 实现分布式锁

    spring boot基于redis的LUA脚本 实现分布式锁[都是基于redis单点下] 一.spring boot 1.5.X 基于redis 的 lua脚本实现分布式锁 1.pom.xml &l ...

  8. spring boot tomcat 部署

    前几天springboot项目部署到linux中,整个过程就是个坑啊.踩坑的过程中也学到了许多.spring boot 项目部署时由于其内置了tomcat和jdk,而且还都是8. 所以部署的话就分为两 ...

  9. 多个Spring Boot项目部署在一个Tomcat容器无法启动

    转自https://www.cnblogs.com/tomxin7/p/9434085.html 业务介绍 最近用Spring Boot开发了一个翻译的小项目,但是服务器上还跑着其他项目,包括一个同样 ...

随机推荐

  1. Unity容器在asp.net mvc中的IOC应用及AOP应用

    <asp.net-mvc框架揭秘>一书中,有个示例,是使用unity容器来注入自定义的控制器工厂.代码示例可以自己去下载源码,在这里我就不说了.IOC容器的本质是解耦的实例化接口类,而如何 ...

  2. 说说我安装pyspider遇到的那些坑

    现在python3.7  >>pip install pyspider    配置环境变量 前置的phantomjs 无界面浏览器,设置就不说了 cmd 中运行pyspider all  ...

  3. input输入框限制20个字符,十个汉字

    英文和数字为一个字符,汉字为两个字符 在 Web 开发中,经常要对表单元素的输入进行限制,比如说不允许输入特殊字符,标点.通常我们会监听 input 事件: inputElement.addEvent ...

  4. C#基础用户登陆

    1.主界面代码: 2.注册页面 3.登陆界面 登陆注册代码: //编写登录界面逻辑 using System; using System.Collections.Generic; using Syst ...

  5. 为NEO-GUI 添加插件系统

    作为一个NEO区块链技术爱好者,经常要摆弄NEOGUI,而NEOGUI在众多开发者手中有了众多的分支实现,我也有自己的分支改版.这是一件很麻烦的事情. 虽然NEO-GUI定位为一个演示客户端与开发工具 ...

  6. 英语口语练习系列-C29-鸟类-辨别身份-断弦的琴

    鸟类 sparrow sparrow 英 ['spærəʊ] 美 ['spæro] n. 麻雀:矮小的人 swallow swallow 英 ['swɒləʊ] 美 ['swɑlo] vt. 忍受:吞 ...

  7. SpringMVC处理器映射器和方法名称解析器

    所谓配置式开发是指,“处理器类是程序员手工定义的,实现了特定接口的类,然后再在SpringMVC配置文件中对该类进行显式的,明确的注册”的开发方式” 1.处理器映射器HandlerMapping Ha ...

  8. [HNOI2007]神奇游乐园

    Description: 在方格图上找一条回路使经过的权值最小 Hint: \(n<=100,m<=6\) Solution: 一开始又看错题了...稍有细节的水题,详见代码 #inclu ...

  9. 20172327 2018-2019-1 《第一行代码Android》第二章学习总结

    学号 2017-2018-2 <第一行代码Android>第二章学习总结 教材学习内容总结 - 活动是什么: 活动(Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件 ...

  10. Java 动态代理 Demo

    相比于静态代理,动态代理避免了开发者编写各个繁锁的静态代理类,只需指定一组接口及目标类对象就能动态地获取代理对象. 使用动态代理的六大步骤: 1 通过实现InvocationHandler接口来自定义 ...