spring boot项目Linux环境jar包启动shell脚本

news/2025/3/6 12:48:44/

spring boot jar启动shell脚本示例

  • 使用场景
  • shell脚本文件示例
  • 可能遇见的问题
    • 1. 无权限
      • 使用`chomd`命令为文件添加权限
    • 2. Shell脚本的行尾格式不兼容
      • 通过 Vim 修改文件格式

使用场景

linux环境,启动小型spring boot项目时,我们总需要一些操作步骤才能将程序启动:

  1. 查找已启动的线程id
  2. 杀掉线程id
  3. 使用命令启动项目

我们可以讲上述命令集成的shell脚本文件中,运行shell脚本文件,快速执行上述步骤,启动程序。

shell脚本文件示例

#!/bin/bash
# 定义应用路径和日志路径
APP_JAR="/app/jar/xxx.jar"
LOG_FILE="/app/logs/log.out"# 查找与指定JAR包关联的Java进程PID
PID=$(ps -ef | grep java | grep "$APP_JAR" | grep -v grep | awk '{print $2}')# 终止现有进程
if [ -n "$PID" ]; thenecho "正在终止进程 $PID..."kill -9 $PIDsleep 2  # 等待进程完全终止[[2]]
fi# 确保日志目录存在
mkdir -p "$(dirname "$LOG_FILE")"# 启动应用并指定JVM参数
echo "正在启动 $APP_JAR..."
nohup java -jar -Xms2048m -Xmx4096m "$APP_JAR" > "$LOG_FILE" 2>&1 &
echo "应用启动成功,日志输出至:$LOG_FILE"

将上述文件保存为start.sh文件,放到Linux服务器上,更新完成jar包后,直接使用命令./start.sh执行shell脚本,即可完成项目的启动

可能遇见的问题

1. 无权限

-bash: ./start.sh: Permission denied

遇见上述问题的原因是因为用户没有操作start.sh文件的权限

使用chomd命令为文件添加权限

chmod u+x start.sh# chmod用法
chmod [who] [opt] [mode] 文件/目录名
who代表对象,是以下字母中的一个或组合:u:User,文件或文件夹的拥有者。
g:Group,文件或文件夹的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。opt则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限mode则代表权限:
r:可读
w:可写
x:可执行

2. Shell脚本的行尾格式不兼容

-bash: ./start.sh: /bin/bash^M: bad interpreter: No such file or directory

出现上述问题原因主要是因为Shell脚本的行尾格式不兼容

通过 Vim 修改文件格式

  1. 打开脚本
vim start.sh
  1. 查看当前格式
:set ff

若显示 fileformat=dos,则需转换。

  1. 修改为Unix格式并保存
:set ff=unix  
:wq  

.


http://www.ppmy.cn/news/1577067.html

相关文章

软考架构师笔记-进程管理

1.4 进程管理 进程状态:运行、等待、就绪。阻塞不能直接到运行状态,需要到就绪状态排队。五态图等。进程管理:前驱图临界资源:共享的资源,如打印机等临界区:访问临界资源的那段代码称为临界区信号量&#…

代码托管平台对比分析:Gitee与GitLab

文章目录 代码托管平台对比分析:Gitee与GitLab平台概述GiteeGitLab 功能对比代码托管与版本控制CI/CD 集成项目管理用户体验自托管与云托管安全性价格与成本 功能对比表格优势与劣势Gitee 优势Gitee 劣势GitLab 优势GitLab 劣势 实际使用场景Gitee 适用场景GitLab 适…

AI-Ollama本地大语言模型运行框架与Ollama javascript接入

1.Ollama Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型,支持文本生成、翻译、代码编写、问答等多种…

SpringMvc与Struts2

一、Spring MVC 1.1 概述 Spring MVC 是 Spring 框架的一部分,是一个基于 MVC 设计模式的轻量级 Web 框架。它提供了灵活的配置和强大的扩展能力,适合构建复杂的 Web 应用程序。 1.2 特点 轻量级:与 Spring 框架无缝集成,依赖…

valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug

valgrind --toolhelgrind ./your_program 如果检测的对象是大型程序,可以设定仅在某些函数中开启 valgrind 的检测: Valgrind 提供了一些客户请求(client requests),可以在代码中插入特定的宏来控制 Valgrind 的行为。…

Windows 图形显示驱动开发-WDDM 3.2-本机 GPU 围栏对象(一)

本文介绍 GPU 围栏同步对象,该对象可用于 GPU 硬件计划阶段 2 中真正的 GPU 到 GPU 同步。 从 Windows 11 版本 24H2 (WDDM 3.2) 开始支持此功能。 图形驱动程序开发人员应熟悉 WDDM 2.0 和 GPU 硬件计划阶段 1。 WDDM 2.x 的受监视围栏同步对象 WDDM 2.x 的受监视…

2025最新Transformer模型及深度学习前沿技术应用

第一章、注意力(Attention)机制 1、注意力机制的背景和动机(为什么需要注意力机制?注意力机制的起源和发展里程碑)。 2、注意力机制的基本原理(什么是注意力机制?注意力机制的数学表达与基本公…

鬼泣:项目前置设置杂项

能帮到你的话,就给个赞吧 😘 文章目录 插件niagara ui render:在 UI 中渲染 Niagara 特效skeletal editor:编辑骨骼,调整骨骼动画motion warping:根据目标自动调整角色动画。animation warping:…