springboot jar包编写启动start.sh

本文提供了一个SpringBoot应用的start.sh脚本模板,介绍了如何指定Java路径、设置JVM参数、重定向日志以及获取应用PID。同时,也提及了如何根据需要配置外部配置和启动参数。

对于Spring Boot应用,由于其内置了用于启动的主类(默认为org.springframework.boot.loader.JarLauncher或你自定义的@SpringBootApplication注解的类),因此start.sh脚本可以相对简化。以下是一个针对Spring Boot应用的start.sh脚本示例:

#!/bin/bash

# 指定Java安装路径,如果环境变量已设置,则不需要这行
#JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64

# 使用JAVA_HOME来获取java可执行文件的路径
if [ -z "$JAVA_HOME" ]; then
  JAVA_EXECUTABLE=java
else
  JAVA_EXECUTABLE=$JAVA_HOME/bin/java
fi

# Spring Boot应用jar文件路径
APP_JAR=/path/to/your/springboot-app.jar

# 应用程序运行所需的JVM参数(例如:内存大小)
JAVA_OPTS="-Xms512m -Xmx1024m"

# 将日志输出重定向到一个文件
LOG_FILE=/path/to/your/logfile.log
exec $JAVA_EXECUTABLE $JAVA_OPTS -jar $APP_JAR >> $LOG_FILE 2>&1 &

# 获取应用的进程ID以便后续可能的操作
PID=$!

# 输出进程ID
echo "Application started with PID: $PID"

请将 /path/to/your/springboot-app.jar 替换为你的Spring Boot应用的实际jar文件路径。

同样,别忘了在执行此脚本前赋予它执行权限:chmod +x start.sh

如果你的应用需要读取外部配置文件或者有其他特定的启动参数,可以通过添加 -Dspring.config.location-Darguments 等参数到 JAVA_OPTS 来实现。

<think>我们正在讨论如何编写.sh脚本来启动Java的jar文件。用户已经提供了几个引用,其中含了启动jar.sh脚本示例。根据这些引用,我们可以总结出编写启动脚本的通用步骤和注意事项。 核心步骤: 1. 创建.sh文件(如start.sh) 2. 在文件中编写启动命令,通常括: - 使用nohup命令(保证在退出终端后程序仍然运行) - 指定Java的堆内存参数(如-Xms, -Xmx) - 将日志输出到指定文件 3. 给脚本授权(chmod +x start.sh) 4. 运行脚本(./start.sh 或 nohup ./start.sh &) 另外,引用中提供了不同的启动脚本示例,我们可以参考这些示例来编写。 引用[2]中的示例: #!/bin/sh nohup java -jar test.jar -Xms64m -Xmx128m -XX:PermSize=64m -XX:MaxPermSize=128m > nothup.out 2>&1 & 引用[3]中的启动脚本示例: #!/bin/sh rm -f tpid nohup java -Xms256m -Xmx256m -jar /app/dev/springboo-learning/springboot-learning-0.0.1-SNAPSHOT.jar > log-springboot-learning.log 2>&1 & echo $! > tpid # 将进程ID保存到文件tpid中 echo Start Success! tail -f log-springboot-learning.log 引用[4]中的示例: 创建一个run.sh文件,内容为: java -jar 文件名 然后使用nohup运行:nohup ./run.sh & 我们可以综合这些示例,给出一个通用的启动jar.sh脚本模板,并解释关键部分。 此外,用户可能还关心如何停止jar,引用[3]中也提供了停止脚本(shutdown.sh),我们可以一并提及。 因此,回答结构如下: 1. 创建启动脚本(start.sh)的方法和示例 2. 创建停止脚本(shutdown.sh)的方法和示例(可选,因为用户只问了启动,但引用中有停止脚本,可以扩展) 3. 给脚本授权的方法 4. 运行脚本的方法 5. 注意事项(如日志输出、内存设置等) 最后生成相关问题。 </think>### 编写`.sh`脚本启动JAR文件的方法 通过分析引用中的脚本示例,以下是规范的启动JAR文件的`.sh`脚本编写方法: #### 📜 **基础启动脚本模板** ```bash #!/bin/sh # 1️⃣ 清除旧进程ID文件(避免冲突) rm -f tpid # 2️⃣ 核心启动命令 nohup java -Xms256m -Xmx256m -jar /路径/your-app.jar > app.log 2>&1 & # 3️⃣ 记录进程ID echo $! > tpid # 将后台进程ID写入文件 # 4️⃣ 验证启动 echo "✅ Start Success!" tail -f app.log # 实时查看日志 ``` **关键参数说明**: - `-Xms256m -Xmx256m`:JVM堆内存初始/最大值(根据需求调整)[^3] - `> app.log`:标准输出重定向到日志文件 - `2>&1`:错误输出合并到标准输出[^2] - `&`:后台运行 - `$! > tpid`:保存进程ID用于后续关闭[^3] --- #### 🔧 **增强功能脚本示例** ```bash #!/bin/sh # 动态日志路径(引用[5]方案) LOG_HOME=/opt/app/logs LATEST_LOG=$(ls -t $LOG_HOME | head -n1) # 带环境参数的启动 nohup java -jar your-app.jar \ --spring.profiles.active=prod \ > $LOG_HOME/$LATEST_LOG 2>&1 & # 健壮性检查 if [ $? -eq 0 ]; then echo "STATUS: RUNNING PID $(cat tpid)" else echo "❌ ERROR: Failed to start" fi ``` --- #### ⚙️ **使用步骤** 1. **创建脚本文件** ```bash vim start.sh # 粘贴上述内容 ``` 2. **授权执行权限** ```bash chmod +x start.sh # 关键步骤![^1][^3] ``` 3. **启动应用** ```bash ./start.sh # 前台运行 nohup ./start.sh & # 后台守护进程[^4] ``` 4. **查看日志** ```bash tail -f app.log # 实时日志 tail -f nohup.out # nohup输出日志[^4] ``` --- #### ⚠️ **注意事项** 1. **JAR路径问题** 脚本中的JAR路径需使用**绝对路径**(如`/app/project.jar`),避免相对路径错误[^3] 2. **内存溢出处理** 若报`Unsupported major.minor version`错误: - 检查JDK版本兼容性 - 更新JDK后重启终端[^4] 3. **权限控制** 部署时用`非root用户`运行脚本,增强安全性: ```bash chown appuser:appgroup start.sh su - appuser -c "./start.sh" ``` > 示例完整项目结构: > ``` > /deploy > ├── your-app.jar # 应用JAR > ├── start.sh # 启动脚本 > ├── shutdown.sh # 停止脚本[^3] > └── config/ # 配置文件目录 > ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值