【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.mzph.cn/news/156847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法训练营一刷 总结篇

今天就是Day60了,坚持了两个月的算法训练营在今天结束了。这两个月中,学习、练习了许许多多的算法,坚持每天完成博客来打卡,养成了写C的习惯,现在相比于Python我反而更喜欢思路严谨的C。感谢这个平台,感谢C…

【DevOps】Git 图文详解(七):标签管理

Git 图文详解(七):标签管理 标签(Tags)指的是某个分支某个特定时间点的状态,是对某一个提交记录的 固定 “指针” 引用。一经创建,不可移动,存储在工作区根目录下 .git\refs\tags。可…

Ajax相关知识

目录 一.前后端传输数据的编码格式(contentType) 1.form表单 2.编码格式 3.Ajax 4.代码演示 后端 前端HTML 二.Ajax发送JSON格式数据 1.引入 后端 前端 2.后端 接收到的数据为空 解决办法 3.request方法判断Ajax 4.总结 前端在通过ajax…

【网络通信】浅析UDP与TCP协议的奥秘

在现代互联网中,UDP(用户数据报协议)和TCP(传输控制协议)是两种最常用的传输协议,它们被广泛应用于网络数据传输。尽管这两种协议都可以用来在网络上传输数据,但它们在设计目标、特点和适用场景…

如何用 GPTs 帮你写科研项目申请书?

(注:本文为小报童精选文章,已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费) 需求 学生们往往会觉得,写开题报告是个苦差事。但他们或许不知道,老师们写起科研项目申请书,压力远比他们…

如何将Docker的构建时间减少40%

与许多公司类似,我们为产品中使用的所有组件构建docker映像。随着时间的推移,其中一些映像变得越来越大,我们的CI构建花费的时间也越来越长。我的目标是CI构建不超过5分钟——差不多是喝杯咖啡休息的理想时间。如果构建花费的时间超过这个时间…

OpenGeometry 开源社区特聘子虔科技云CAD专家 共建云几何内核

11月5日,由广东省工业和信息化厅、广东省科学技术厅、广东省教育厅、深圳市人民政府主办的2023工业软件生态大会在广东省深圳市召开。 开幕式上,备受关注的云几何内核开源平台——OpenGeometry开源社区正式发布。这意味着在几何引擎领域将通过开源这个模…

设计模式—命令模式

1.什么是命令模式? 命令模式是一种行为型设计模式,核心是将每种请求或操作封装为一个独立的对象,从而可以集中管理这些请求或操作,比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者&#xff0…

梨花声音教育,美食视频配音再次挑战味蕾

在为美食视频进行配音时,配音艺术家的目标是通过声音来激活观众的感官,唤起他们对美味佳肴的渴望,同时展现食物的诱人特色和烹饪的艺术性。配音应当能够描绘美食的丰富细节,传达烹饪的趣味性以及食材的高品质。以下是一些为美食视…

KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(20)

接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(19) 上一回讲解了从drm_mode_addfb2_ioctl()和drm_mode_addfb_ioctl()一步步往前追溯的全过程: drm_mode_addfb2_ioctl() / drm_mode_addfb_ioctl() ---> drm_ioctls[] ---> drm_ioctl()---> …

iOS越狱检测总结

文章目录 前言检测越狱文件私有目录检测检测越狱软件检测系统目录是否变为链接动态库检测环境变量检测系统调用检测指令集调用检测其他方式检测 前言 在之前的文章中,已经带大家一起制作了一个屏蔽越狱检测的Tweak。本文就和大家一起学习整理一下iOS系统中有哪些越…

MATLAB算法实战应用案例精讲-【数模应用】漫谈机器学习(三)

目录 机器学习发展历程 1. 五大流派 2. 演化的阶段 1980 年代 1990 年代到 2000 年

NGINX缓存详解之服务端缓存

服务端缓存 proxy cache属于服务端缓存,主要实现 nginx 服务器对客户端数据请求的快速响应。 nginx 服务器在接收到被代理服务器的响应数据之后,一方面将数据传递给客户端,另一方面根据proxy cache的配置将这些数据缓存到本地硬盘上。 当客户端再次访问相同的数据时,nginx…

计算机杂谈系列精讲100篇-【大模型】漫谈ChatGPT

目录 前言 几个高频面试题目 1. ChatGPT的通用性为何做得如此之好?

【Java系列】SpringBoot 集成MongoDB 详细介绍

目录 写在前面 一、步骤介绍 步骤 1: 添加 MongoDB 依赖 步骤 2: 配置 MongoDB 连接信息 步骤 3: 创建实体类 步骤 4: 创建 Repository 接口 步骤 5: 使用 Repository 进行操作 二、特殊处理 写在前面 在Spring Boot中集成MongoDB的过程相对简单,以下是一个…

架构探索之路-第一站-clickhouse | 京东云技术团队

一、前言 架构, 软件开发中最熟悉不过的名词, 遍布在我们的日常开发工作中, 大到项目整体, 小到功能组件, 想要实现高性能、高扩展、高可用的目标都需要优秀架构理念辅助. 所以本人尝试编写架构系列文章, 去剖析市面上那些经典优秀的开源项目, 学习优秀的架构理念来积累架构设…

在html和css中的引用svg(一)

问题&#xff1a;如何让 DIV 中的svg垂直居中&#xff1f; HTML 代码&#xff1a; <div class"content"><svg ...> ... </svg></div> CSS代码&#xff1a; .content svg { vertical-align: middle;} 实用扩展&#xff1a;如何让 DIV 中…

Spring整合其他组件

外部命名空间标签的执行流程&#xff0c;如下&#xff1a; 将自定义标签的约束与物理约束文件与网络约束名称的约束&#xff0c;以键值对形式存储到一个spring.schemas文件中&#xff0c;该文件存储在类加载路径的META-INF里&#xff0c;Spring会自动加载到 将自定义命名空间的…

极致性能优化之道之消除伪共享

“不积跬步&#xff0c;无以至千里。” 引言 在并发编程中&#xff0c;伪共享&#xff08;False Sharing&#xff09;是一种性能问题&#xff0c;特别是在多核处理器上。这个问题通常出现在多个线程同时修改彼此不同但共享同一缓存行的数据。为了解决伪共享问题&#xff0c;我…

Redis-五种数据类型

Redis基本特性 a) 非关系型的键值对数据库&#xff0c;可以根据键以O(1) 的时间复杂度取出或插入关联值 b) Redis 的数据是存在内存中的 c) 键值对中键的类型可以是字符串&#xff0c;整型&#xff0c;浮点型等&#xff0c;且键是唯一的 d) 键值对中的值类型可以是string&a…