restart-java-app.sh 是一个用于在Linux系统下管理Java JAR包应用的Shell脚本。它可以自动检测应用是否运行,并提供启动、停止、重启等功能。
在使用脚本前,需要修改脚本开头的配置参数:
# ========================================
# 配置参数 - 请根据实际情况修改
# ========================================
JAR_NAME="" # JAR包名称(留空则自动检测)
PORT=8080 # 应用端口号
| 参数 | 说明 | 示例 |
|---|---|---|
JAR_NAME |
JAR包文件名(留空可自动检测) | "my-spring-boot-app.jar" 或 "" |
PORT |
应用监听端口 | 8080 |
自动检测功能: 如果将 JAR_NAME 留空(JAR_NAME=""),脚本会自动检测当前目录下的JAR文件:
| 参数 | 说明 | 默认值 |
|---|---|---|
JAVA_OPTS |
JVM启动参数 | "-Xms512m -Xmx1024m" |
LOG_FILE |
日志文件名 | "app.log" |
PID_FILE |
PID文件名 | "app.pid" |
chmod +x restart-java-app.sh
# 重启应用(默认操作)
./restart-java-app.sh
# 或者明确指定重启
./restart-java-app.sh restart
# 启动应用
./restart-java-app.sh start
# 停止应用
./restart-java-app.sh stop
# 查看应用状态
./restart-java-app.sh status
# 显示帮助信息
./restart-java-app.sh help
脚本使用彩色输出来区分不同类型的消息:
脚本运行时会创建以下文件:
app.log: 应用运行日志app.pid: 应用进程PID文件A:
JAR_NAME=""),确保当前目录下有且仅有一个JAR文件JAR_NAME配置是否正确,确保JAR文件在脚本同一目录下A: 当目录下有多个JAR文件时,需要在脚本中明确指定JAR_NAME,例如:JAR_NAME="my-app.jar"
A: 检查是否有其他应用占用了配置的端口,或修改PORT配置。
A: 查看app.log日志文件,检查具体错误原因。
A: 脚本会先尝试优雅停止,30秒后自动强制停止。
如果你的目录下只有一个JAR文件,可以使用自动检测模式:
JAR_NAME="" # 留空,自动检测
PORT=8080
./restart-java-app.sh start
脚本会自动检测并使用目录下唯一的JAR文件。
假设你有一个名为my-app.jar的Spring Boot应用,需要在8080端口运行:
JAR_NAME="my-app.jar"
PORT=8080
./restart-java-app.sh start
./restart-java-app.sh status
输出示例:
[2024-01-15 10:30:15] 应用正在运行
[2024-01-15 10:30:15] PID: 12345
[2024-01-15 10:30:15] 端口: 8080
[2024-01-15 10:30:15] 端口状态: 正在监听