当前位置: 首页 > news >正文

SpringBoot项目(jar)部署,启动脚本

需求

SpringBoot项目(jar)部署,需要先关闭原来启动的项目,再启动新的项目。直接输入命令,费时费力,还容易出错。所以,使用脚本启动。

脚本

脚本名:start.sh
此脚本需要放置在jar包的同级目录,才能正确找到jar包。

#!/bin/bash
echo "部署开始:XXX系统"echo "关闭服务(已开启的服务)"
PID=$(jps -l | grep HelloWorld.jar | awk '{print $1}')
if [ -n "$PID" ];thenkill -9 $PIDecho "关闭服务:完成"
elseecho "关闭服务:终止。无需关闭,没有已开启的服务"
fiecho "启动服务"
nohup java -jar HelloWorld.jar > HelloWorld.log 2>&1 &echo "部署完成:XXX系统"

启动命令

在脚本所在目录,执行如下命令:

sh start.sh

注意问题

Shell 变量赋值,等号前后不能有空格

一开始,我在给pid赋值时,等号左右两端有等号,导致报错。

解决 nohup: redirecting stderr to stdout

需要将错误输出,也输入到log日志中。
也就是脚本中加了如下一段:

2>&1

作用是将错误输出到标准输出,因为标准输出又是输出到log日志中,所以就都输入到日志中,这样命令行就不会报上面的输出了。

Shell变量语法

精简语法:

$pid

完整语法:

${pid}

完整的变量应用语法,不仅要包含$,还要在变量名周围加上好括号。
在这里插入图片描述

PS

关闭已开启服务的逻辑,采用的是直接强制关闭服务。

更好的方式,其实是让服务自己关闭自身,然后定时监控:
一段时间之后,如果程序已经关闭了,就开启新项目;
如果超过规定时间,仍然没有关闭成功,则强制关闭,然后启动新项目。

此逻辑可以参考最后的《脚本参考》链接。

VSCode格式化shell

http://www.taodudu.cc/news/show-4756426.html?action=onClick

参考

脚本参考:

https://gitee.com/longzipeng/study_share/blob/master/web_demo/renren_deploy.sh

http://www.lryc.cn/news/150452.html

相关文章:

  • 大数据(四)主流大数据技术
  • 【已解决】激活虚拟环境报错:此时不应有Anaconda3\envs\[envs]\Library\ssl\cacert.pem。
  • Vue安装过程的困惑解答——nodejs和vue关系、webpack、vue-cli、vue的项目结构
  • PWA ~
  • YII项目在Docker中运行缓慢
  • 合宙Air724UG LuatOS-Air LVGL API控件--图表 (Chart)
  • Three.js之模型对象、材质
  • uniapp启动微信小程序开发者工具报错Enable IDE Service (y/N) 
  • Gitee注册和使用
  • 【Flutter】下载安装Flutter并使用学习dart语言
  • HTTP返回状态值详解整理
  • python web 开发与 Node.js + Express 创建web服务器入门
  • OpenCV(三):Mat类数据的读取
  • 区块链BaaS篇
  • C++|观察者模式
  • 【java 入侵 C# 之路】1-入门
  • 【git】从一个git仓库迁移到另外一个git仓库
  • 控制goroutine 的并发执行数量
  • 深入解析即时通讯App开发中的关键技术
  • ClickHouse进阶(三):ClickHouse 索引
  • 四、MySQL(表操作)如何添加字段?修改表?删除字段?修改表名?删除表?格式化某张表?
  • docker启动paddlespeech服务,并使用接口调用
  • 如何训练ChatGPT以生成音乐和创意艺术作品?
  • 北约报告:2023-2043,下一代量子技术的发展与挑战
  • arm版Linux下安装es集群
  • vConsole调试工具的三种使用方式
  • 不用订阅,不用破解,永久免费使用Axure最新版教程
  • 合宙Air724UG LuatOS-Air LVGL API控件--复选框 (Checkbox)
  • 使用nps实现内网穿透
  • 时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测