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

【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包

  1. 在Linux系统中先安装java的JDK
  2. 然后编写下列service.sh脚本,并根据自己的需求只需要修改export的log_path、exec_cmd参数即可
    1. # 配置运行日志输出的路径
      export log_path=/usr/local/project/study-pro/logs
      # 当前服务运行的脚本命令
      export exec_cmd="nohup /usr/local/project/openjdk-8/bin/java -jar /usr/local/project/study-pro/study-pro-0.0.1-SNAPSHOT.jar"
      # 获取脚本所在的目录
      CUR_DIR=$(dirname $0)
      # 进入到该目录运行,这样可以规避绝对路径的问题,你的脚本迁移到任何目录都可以正常运行
      cd ${CUR_DIR}# 该函数running正常退出,not running则退出非0值
      check_server_is_running() {[[ ! -f "pid" ]] && touch pid# 获取PID=$(cat pid)# 首先判断pid是否存在if [ "${PID}" = "" ]thenecho "server is not running."return 1fi# 再判断指定的PID是否在当前目录运行,防止因历史异常原因遗留了失效PID,正好该PID又被其他进程占用,造成误杀。if [[ -d /proc/${PID}/cwd ]] && ls -ahl /proc/${PID}/cwd | grep -q "${CUR_DIR}"thenecho "server is running."return 0else# 清空失效的进程号并异常退出echo "" > pidreturn 1fi
      }start() {# 启动前判断日志目录是否存在,不存在就创建[[ ! -d "${log_path}" ]] && mkdir -p ${log_path}# 启动服务${exec_cmd} > ${log_path}/start.log 2>&1 &# 保存PID,以供stop使用PID=$!echo "server start succ, PID=${PID}!"echo "${PID}" > pid
      }stop() {# get pidPID=$(cat pid)kill -9 ${PID}
      }case C"$1" inCstart)# ||:前一个运行失败后,才运行后面一个脚本。单进程执行。若遇到第一个执行成功的脚本后,后面的脚本不再执行。check_server_is_running || startecho "start done.";;Cstop)# &&:前一个运行成功后,才运行下一个。单进程执行,若中途某个脚本执行报错,后面的脚本不再执行check_server_is_running && stopecho "stop done.";;Crestart)check_server_is_running && stop check_server_is_running || start echo "restart done.";;C*)echo "Usage: $0 {start|stop|restart}";;
      esac
      
  3. 如果脚本没有可执行权限,需要先赋权再执行命令
    1. chmod -R +x service.sh
  4. 在脚本的目录中执行下列命令即可正常运行、停止、重启相应的Spring Boot服务
    1. 执行脚本说明
      ./service.sh start服务启动
      ./service.sh stop服务停止
      ./service.sh restart服务重启
  5. 当前示例执行服务启动命令,可以看出服务已经可以正常启动并访问了
    1. ./service.sh start
http://www.lryc.cn/news/239445.html

相关文章:

  • 交替最小二乘法
  • 封面从这里取好啦
  • DM8共享集群DSC初始化DB实例报错
  • 大师学SwiftUI第18章Part1 - 图片选择器和相机
  • 【电子通识】USB3.0和USB2.0有什么区别?
  • 在VSCode创建vue项目,出现“因为在此系统上禁止运行脚本”问题
  • OpenCV快速入门:目标检测——轮廓检测、轮廓的距、点集拟合和二维码检测
  • 基于STM32的烟雾浓度检测报警仿真设计(仿真+程序+讲解视频)
  • Jenkins 下载安装
  • MySQL 事务的底层原理和 MVCC(二)
  • (C++)验证回文字符串
  • 代码随想录算法训练营第25天|216.组合总和III 17.电话号码的字母组合
  • Kotlin学习——hello kotlin 函数function 变量 类 + 泛型 + 继承
  • 打印lua输出日志
  • HTML新手入门笔记整理:HTML基本介绍
  • 梯度引导的分子生成扩散模型- GaUDI 评测
  • 2023 年 亚太赛 APMCM ABC题 国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析
  • 如何用cmd命令快速搭建FTP服务
  • 数据结构学习笔记——多维数组、矩阵与广义表
  • C++之常用的排序算法
  • Mac中LaTex无法编译的问题
  • 【Python爬虫】8大模块md文档集合从0到scrapy高手,第7篇:selenium 数据提取详解
  • 【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组
  • 使用VSCode调试全志R128的C906 RISC-V核心
  • Node.js之http模块
  • golang 断点调试
  • 定时器如何计算触发频率?
  • 【数据库】数据库中的检查点Checkpoint,数据落盘的重要时刻
  • 关于 Docker
  • ​LeetCode解法汇总2342. 数位和相等数对的最大和