【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}" = "" ]
          then
              echo "server is not running."
              return 1
          fi
          
          # 再判断指定的PID是否在当前目录运行,防止因历史异常原因遗留了失效PID,正好该PID又被其他进程占用,造成误杀。
          if [[ -d /proc/${PID}/cwd ]] && ls -ahl /proc/${PID}/cwd | grep -q "${CUR_DIR}"
          then
              echo "server is running."
              return 0
          else
              # 清空失效的进程号并异常退出
              echo "" > pid
              return 1
          fi
      }
      
      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 pid
          PID=$(cat pid)
          kill -9 ${PID}
      }
      
      
      case C"$1" in
          Cstart)
              # ||:前一个运行失败后,才运行后面一个脚本。单进程执行。若遇到第一个执行成功的脚本后,后面的脚本不再执行。
              check_server_is_running || start
              echo "start done."
              ;;
          Cstop)
              # &&:前一个运行成功后,才运行下一个。单进程执行,若中途某个脚本执行报错,后面的脚本不再执行
              check_server_is_running && stop
              echo "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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/174490.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python---函数的应用案例(多个)

案例:使用print方法打印一条横线 print(- * 40) 案例:对上个案例进行升级,可以根据输入的num数值,生成指定数量的横线 def print_lines(num, length):""" print_lines函数主要作用用于生成多条指定长度的横线&…

科技赋能,创新发展!英码科技受邀参加2023中国创新创业成果交易会

11月17日至19日,2023中国创新创业成果交易会(简称:创交会)在广州市广交会展馆圆满举行。英码科技受邀参加本届创交会,并在会场展示了创新性的AIoT产品、深元AI引擎和行业热门解决方案。 据介绍,本届创交会由…

敏捷DevOps专家王立杰:端到端DevOps持续交付的5P法则 | IDCF

今天有一个流行的英文缩写词用来刻画这个风云变幻的时代:VUCA(乌卡时代)。四个英文字母分别表示动荡性(Volatility)、不确定性(Uncertainty)、复杂性(Complexity)和模糊性…

shell 脚本语句

目录 条件语句 test 命令 比较整数数值 字符串比较 命令举 条件逻辑测试操作 组合写法 举例 双中括号 ​编辑 ( ) / { } if 语句的结构 case 语句 脚本举例 识别 yes 和 no 脚本 检查磁盘使用情况脚本 新建用户以及随机设置用户密码的脚本 补充命令 [RANDOM…

【C++进阶之路】第五篇:哈希

文章目录 一、unordered系列关联式容器1.unordered_map(1)unordered_map的介绍(2)unordered_map的接口说明 2. unordered_set3.性能对比 二、底层结构1.哈希概念2.哈希冲突3.哈希函数4.哈希冲突解决(1)闭散…

【C++】C++11(1)

文章目录 一、C11简介二、统一的列表初始化1.{}初始化2.std::initializer_list 三、声明1.auto2.decltype3.nullptr 四、STL中一些变化五、右值引用和移动语义1.左值引用和右值引用2.左值引用与右值引用比较3.右值引用使用场景和意义4.右值引用引用左值及…

什么是办公RPA?办公RPA解决什么问题?办公RPA实施难点在哪里?

什么是办公RPA? 办公RPA是一种能够模拟人类在计算机上执行任务的自动化软件。它可以在没有人工干预的情况下,执行重复的、规则化的任务,例如数据输入、网页爬取、电子邮件管理等。办公RPA可以帮助企业提高工作效率,降低人力成本&…

px4+vio实现无人机室内定位

文章主要讲述px4 如何利用vins_fusion里程计数据实现在室内定位功能。 文章基于以下软、硬件展开。 硬件软件机载电脑: Intel NUC系统:Ubuntu 20.04相机: Intel Realsense D435iros:noetic飞控:Pixhawk 2.4.8固件&am…

Golang基础-面向对象篇

文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中,可以使用type 关键字来创建自定义类型,这对于提高代码的可读性和可维护…

城市易涝点怎么安装万宾科技内涝积水监测仪?

城市内涝是多个城市广泛存在的问题,经常给城市的居民和基础设施带来一些安全威胁。暴雨引发的道路积水和交通中断、财产损失,甚至公共安全威胁都是城市管理者需要提前预防的问题。为了解决这些问题,内涝积水监测仪的应用是一大重要的举措&…

2021秋招-算法-递归

算法-递归 教程: ⭐告别递归,谈谈我的一些经验 LeetCode刷题总结-递归篇 基础框架 leetcode刷题 1.leetcode-101. 对称二叉树-简单 101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。…

docker通过挂载conf文件启动redis

初衷:之前直接在启动脚本中没有挂载配置文件,并且直接设置了密码等,后续要使用集群,苦于无法修改配置,进入redis容器也找不到redis.conf,所以写这个文章用来使用redis的配置,来达到后续都可动态…

基于51单片机音乐盒LCD1602显示( proteus仿真+程序+原理图+设计报告+讲解视频)

基于51单片机音乐盒LCD1602显示( proteus仿真程序原理图设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0065 音乐盒 1. 主要功能:2. 讲解视频:3. 仿真…

阿里云ECS服务器如何搭建并连接FTP,完整步骤

怎么用终端连接服务器就不多说了,直接开始搭建FTP。 我是用root账号执行的命令,如果不使用root账号,注意在命令前面加sudo。 一、安装FTP 我这里安装的是vsftpd。 1、检查是否已安装vsftpd: vsftpd -v如果出现了版本信息&…

(一)pytest自动化测试框架之生成测试报告(mac系统)

前言 我们可以通过pytest-html插件来生成测试报告,但是pytest-html插件生成的测试报告不够美观,逼格也不够高,通过allure生成的测试报告是比较美观的,花里胡哨的,能够提升一个level。 allure官网: Allure…

php反序列化漏洞

php反序列化漏洞 什么是序列化 在数据传输过程中有可能会丢失,那么这时候就出现了序列化,序列化可以将对象的状态信息转换为可以存储或传输的形式。 什么是反序列化 反序列化就是将字符串转化为对象的状态信息,反序列化是序列化的逆过程&…

微信小程序面试题【100道】

文章目录 小程序面试题100问前言一、技术性问题1.有哪些参数传值的方法2.小程序修改数据值与Vue和React有什么差异3.如何实现下拉刷新与上拉加载4.bindtap和catchtap的区别是什么5.小程序有哪些导航API,它们各自的应用场景与差异区别是什么6.小程序中如何使用第三方…

Pycharm run 输出界面控制一行能够输出的元素个数

Pycharm run 输出界面控制一行能够输出的元素个数 今天遇到了一个问题,当我们在 Pycharm 中打印输出数组时,如果数组一行的元素个数过多,那么我们在打印时就会出现以下问题。 代码如下: import numpy as npx np.array([[0., 0.7…

UI for Apache Kafka

文章Overview of UI Tools for Monitoring and Management of Apache Kafka Clusters | by German Osin | Towards Data Science中介绍了8种常见的kafka UI工具,这些产品的核心功能对比信息如下图所示, 通过对比发现 UI for Apache Kafka 功能齐全且免费,因此可以作为我们的首…