springboot项目使用maven打包成jar包,如何在linux优雅部署?平时启动项目使用java -jar命令,关闭程序需要查询pid再查杀进程,这样都太麻烦了,今天发现一个博客已经写好的脚本,如下:

实现以下命令:

  • 启动 : start
  • 停止 :stop
  • 重启 : restart
  • 运行状态 :status
  • 查看实时日志 : log
  • 备份 : backup

备注:脚本会屏蔽部分敏感词,估针对实际情况进行修改即可使用。

脚本代码

脚本内容如下,复制修改后保存即可使用(如 : xxx.sh),脚本已有相应的注释应该好理解。

#!/bin/bash
#这里可替换为jar包名字
APP_NAME=xxx-1.0.jar
#根据实际情况修改参数
JVM="-server -Xms2g -Xmx2g -Xmn512m -XX:PermSize=128M -XX:MaxNewSize=128m -XX:MaxPermSize=25zh6m -Xss256k -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xloggc:/logs/xxx-server/GC/xxx-gc.log"
#APPFILE_PATH="-Dspring.config.location=/usr/local/config/application.properties"
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status|log|backup]"
exit
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return
else
return
fi
} #启动方法
start(){
is_exist
if [ $? -eq "" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
#nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null >&
#后台启动jar包,且控制环境变量,根据实际情况修改吧。
nohup java $JVM -jar $APP_NAME --spring.profiles.active=prod > /dev/null >& &
fi
} #停止方法
stop(){
is_exist
if [ $? -eq "" ]; then
kill - $pid
else
echo "${APP_NAME} is not running"
fi
} #输出运行状态
status(){
is_exist
if [ $? -eq "" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
} #日志
log(){
# 输出实时日志
tail -n -f /logs/fdc-server/fdc-server.log
} #备份
backup(){
#根据需求自定义备份文件路径。
BACKUP_PATH=/usr/local/webapps/backup/xxx-server/
#获取当前时间作为备份文件名
BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`
echo 'backup file ->'$BACKUP_PATH$BACKUP_DATE'.jar'
#备份当前jar包
cp -r /usr/local/webapps/$APP_NAME $BACKUP_PATH$BACKUP_DATE'.jar'
} #根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
"log")
log
;;
"backup")
backup
;;
*)
usage
;;
esac

备注:脚本中“xxx”相应的位置都需要进行修改。(当然可以做成参数来控制,多项目可使用,但觉得没必要,请自行修改吧。)

运行脚本

修改完脚本后,上传到相应位置及文件权限。
查看脚本有哪些方法:

sh xxx.sh

如下图:

 
 

具体命令如下:

cd  /xxxx/xxx
#启动
sh xxx.sh start
#停止
sh xxx.sh stop
#重启
sh xxx.sh restart
#运行状态
sh xxx.sh status
#查看实时日志
sh xxx.sh log
#备份
sh xxx.sh backup

至此结束,可根据自己需求去修改。

转载
链接:https://www.jianshu.com/p/7effaacb435d

springboot的jar在linux运行的更多相关文章

  1. springboot打包jar包后运行

    我们知道,spring boot内嵌tomcat,打包成jar包以后,直接就可以运行. 我们也可以使用启动项里面的mian入口来运行程序. 运行jar包时,我们一般是java -jar xxx.jar ...

  2. springboot下jar包方式运行Caused by: java.lang.ExceptionInInitializerError: null

    idea调试过程中不会出现此问题,异常如下 org.springframework.beans.factory.BeanCreationException: Error creating bean w ...

  3. springboot 以jar方式在linux后台运行

    linux命令如下: nohup java -jar 自己的springboot项目.jar >日志文件名.log 2>&1 & 命令解释: nohup:不挂断地运行命令, ...

  4. Linux下 SpringBoot jar项目后台运行、查看、停用

    运行java jar: nohup java -jar **-0.0.1-SNAPSHOT.jar & 查看进程: 采用top或者ps aux命令.一般 如果后台是springboot,jar ...

  5. springboot项目jar包运行

    springboot项目jar包运行 参考 Linux后台运行java的jar包 步骤 进入maven项目中,打包项目. mvn package -Dmaven.test.skip=true 运行ja ...

  6. HDFS的java客户端操作代码(Windows上面打jar包,提交至linux运行)

    1.通过java.net.URL实现屏幕显示demo1文件的内容 package Hdfs; import java.io.InputStream; import java.net.URL; impo ...

  7. Linux jar包 后台运行

    Linux 运行jar包命令如下: 方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...

  8. linux运行jar报错

    通过maven打jar包,然后复制到虚拟机上执行nohup java -jar xxx.jar &命令,运行jar文件,这时抛出了异常 com.mysql.jdbc.exceptions.jd ...

  9. Linux 运行jar包命令(Cent OS 7后台运行jar包)

    Linux 运行jar包命令如下: 方式一 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar shareniu. ...

随机推荐

  1. sys.dm_exec_query_stats的total_worker_time的单位是微秒还是毫秒

    该视图sys.dm_exec_query_stats存放的就是当前所有执行计划的详细信息,比如某条执行计划共占CPU多少等等.因为该视图对编译次数.占用CPU资源总量.执行次数等都进行了详细的记录,所 ...

  2. reactnative中FlatList上拉加载更多的解决办法

    项目app中用到了list滚动加载,把List做了下对比发现FlatList比较适合自己的项目,但是在实际运用中 onEndReached方法需要给定 onEndReachedThreshold的高度 ...

  3. VisualSVN 关于权限(第2篇)

    最终的答案: 仓库本身不能给他增加访问权限,必须增加否则连不上,不增加的时候 他默认就是No Access: 仓库本身可以理解为:祖宗,他是访问权限的根基.子目录会继承他的权限. 那么既然必须给他增加 ...

  4. 基于【 centos7】一 || 安装ELK

    一.安装jdk 上传安装包并解压:tar -zxvf ... 配置环境变量: 在配置文件中添加如下配置信息:vi /etc/profile export JAVA_HOME=/usr/local/jd ...

  5. vue去哪儿网项目环境配置

     一.首先安装node.js 根据自己的(windows或mac)系统进行安装node,在开发环境中一般安装LTS版本.安装成功后,在终端输入"node -v"和"npm ...

  6. jq 停止/结束多个ajax请求

    页面按钮: <button id="song">abort</button> 请求: var str = {} str.xhr = $.ajax({ typ ...

  7. C++自问

    1.forwarding reference 2.move 3. map的内部实现 rb tree,但rbtree优点是什么?使用情况?和b+有啥区别? 4.顺序容器和关联容器的区别: 本质区别是顺序 ...

  8. 19C imp 导入合并表空间

    因为项目需要从9i 导数据到18C,所以发现如下特性 1.18C imp 导入数据,如果表空间在目标库没有,会将表导入到用户默认表空间 2.18C imp 导入数据,如果表空间在目标库有,但缺少权限. ...

  9. Scyther-Semantics and verification of Security Protocol 翻译 (第二章 2.2.2----2.3)

    2.2.2  事件顺序 协议中的每个角色对应于事件列表,换句话说, 在属于角色 R 的协议事件集上施加结构,总的排序表示为 $ \prec $ , 如此任何角色 R∈Role 和 $\varepsil ...

  10. lvs+keepalived+application部署(只使用两台机器)

    目前大家用LVS+Keepalived + APP 架构都是 2台LVS +Keepalived 然后后端跟着 应用设备 然而针对小客户来说,  2台LVS平常没什么压力 还有一台备着(虽然可以跑双主 ...