四零语境后端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

6.8 KiB

Java应用启动脚本使用说明

概述

restart-java-app.sh 是一个功能强大的Java应用管理脚本,支持启动、停止、重启和状态查看等操作。脚本支持单个JAR包操作和多JAR包批量操作,提供灵活的JAR包昵称匹配功能。

主要功能

  • 自动JAR包检测 - 当目录中只有一个JAR包时自动选择
  • 多JAR包选择 - 当目录中有多个JAR包时提供交互式选择菜单
  • 多JAR包批量操作 - 支持通过昵称同时操作多个JAR包
  • 模糊匹配 - 支持通过昵称模糊匹配JAR文件名
  • 全量操作 - 支持使用'all'参数操作所有JAR包
  • 进程管理 - 自动管理应用进程的启动和停止
  • 日志管理 - 自动生成基于JAR包名和时间戳的日志文件
  • 状态监控 - 实时查看应用运行状态
  • 优雅停止 - 先尝试正常停止,必要时强制终止

配置参数

在使用脚本前,需要修改脚本开头的配置参数:

# ========================================
# 配置参数 - 请根据实际情况修改
# ========================================
JAR_NAME=""                      # JAR包名称(留空则自动检测)

主要配置项

参数 说明 示例
JAR_NAME JAR包文件名(留空可自动检测) "my-spring-boot-app.jar"""

自动检测功能: 如果将 JAR_NAME 留空(JAR_NAME=""),脚本会自动检测当前目录下的JAR文件:

  • 如果只有一个JAR文件,自动使用该文件
  • 如果有多个JAR文件,会显示选择菜单让用户选择具体的JAR文件
  • 如果没有JAR文件,会提示错误

可选配置项

参数 说明 默认值
JAVA_OPTS JVM启动参数 "-Xms512m -Xmx1024m"
LOG_FILE 日志文件名(留空则自动生成) ""
PID_FILE PID文件名 "app.pid"

使用方法

1. 设置执行权限

chmod +x restart-java-app.sh

2. 基本用法

# 重启应用(默认操作)
./restart-java-app.sh

# 或者明确指定重启
./restart-java-app.sh restart

3. 其他命令

# 启动应用
./restart-java-app.sh start

# 停止应用
./restart-java-app.sh stop

# 查看应用状态
./restart-java-app.sh status

# 显示帮助信息
./restart-java-app.sh help

命令详解

start - 启动应用

  • 检查JAR文件是否存在
  • 启动Java应用
  • 等待应用完全启动
  • 验证应用启动状态

stop - 停止应用

  • 查找应用进程PID
  • 发送TERM信号优雅停止
  • 等待最多30秒
  • 超时后强制停止(KILL信号)
  • 清理PID文件

restart - 重启应用

  • 先执行stop操作
  • 等待2秒
  • 再执行start操作

status - 查看状态

  • 显示应用运行状态
  • 显示进程PID

输出说明

脚本使用彩色输出来区分不同类型的消息:

  • 🔴 红色: 错误信息
  • 🟢 绿色: 成功信息
  • 🟡 黄色: 警告信息
  • 🔵 蓝色: 操作信息

文件说明

脚本运行时会创建以下文件:

  • 日志文件: 自动生成,格式为 {JAR包名}_{启动时间}.log,例如:my-app_20240115_143025.log
  • PID文件: app.pid - 应用进程PID文件

日志文件命名规则

  • 自动生成模式(推荐):当 LOG_FILE="" 时,系统会自动生成日志文件名
  • 格式: {JAR包名称}_{年月日_时分秒}.log
  • 示例:
    • JAR包:my-spring-boot-app.jar
    • 启动时间:2024年1月15日 14:30:25
    • 日志文件:my-spring-boot-app_20240115_143025.log
  • 手动指定:如果在脚本中设置了 LOG_FILE="custom.log",则使用指定的文件名

常见问题

Q: 提示"JAR文件不存在"

A:

  • 如果使用自动检测模式(JAR_NAME=""),确保当前目录下有且仅有一个JAR文件
  • 如果指定了JAR文件名,检查JAR_NAME配置是否正确,确保JAR文件在脚本同一目录下

Q: 提示"当前目录下有多个JAR文件"

A: 当目录下有多个JAR文件时,脚本会显示选择菜单,按提示输入对应的序号即可选择要启动的JAR文件。你也可以在脚本中明确指定JAR_NAME,例如:JAR_NAME="my-app.jar"

Q: 应用启动失败

A: 查看app.log日志文件,检查具体错误原因。

Q: 无法停止应用

A: 脚本会先尝试优雅停止,30秒后自动强制停止。

系统要求

  • Linux操作系统
  • Bash Shell
  • Java运行环境

注意事项

  1. 确保脚本有执行权限
  2. 确保Java环境已正确安装
  3. 确保JAR文件路径正确
  4. 建议在生产环境使用前先在测试环境验证
  5. 定期检查日志文件大小,避免占用过多磁盘空间

示例

示例1: 自动检测模式(推荐)

如果你的目录下只有一个JAR文件,可以使用自动检测模式:

  1. 保持脚本配置为默认:
JAR_NAME=""                      # 留空,自动检测
  1. 启动应用:
# 启动应用
./restart-java-app.sh start

# 重启应用
./restart-java-app.sh restart

脚本会自动检测并使用目录下唯一的JAR文件。

示例2: 指定JAR文件名

假设你有一个名为my-app.jar的Spring Boot应用:

  1. 修改脚本配置:
JAR_NAME="my-app.jar"
  1. 使用不同方式启动:
# 启动应用
./restart-java-app.sh start

# 重启应用
./restart-java-app.sh restart

# 停止应用
./restart-java-app.sh stop
  1. 查看状态:
./restart-java-app.sh status

示例3: 多JAR文件选择

当目录下有多个JAR文件时,脚本会提供交互式选择:

# 启动脚本,会显示选择菜单
./restart-java-app.sh start

交互式JAR包选择

当脚本检测到多个JAR文件时,会提供交互式选择界面:

检测到多个JAR文件,请选择要启动的应用:

[1] user-service-1.0.0.jar
[2] order-service-1.0.0.jar
[3] payment-service-1.0.0.jar

输入选项:
  - 单个序号: 1 (选择第1个JAR包)
  - 多个序号: 1,3,5 或 1 3 5 (选择多个JAR包)
  - 全部选择: all (选择所有JAR包)

请输入选择: 

支持的输入格式:

  • 1 - 选择单个JAR包
  • 1,3,5 - 选择多个JAR包(逗号分隔)
  • 1 3 5 - 选择多个JAR包(空格分隔)
  • all - 选择所有JAR包

选择多个JAR包时,脚本会自动切换到批量操作模式。

输出示例:

检测到多个JAR文件,请选择要启动的应用:

[1] my-web-app.jar
[2] my-api-service.jar
[3] my-batch-job.jar

请输入序号 (1-3): 2
✓ 已选择: my-api-service.jar

正在启动应用...
JAR包: my-api-service.jar
JVM参数: -Xms512m -Xmx1024m
日志文件: my-api-service_20240115_143025.log
✓ 应用启动成功 (PID: 12345)
日志文件: my-api-service_20240115_143025.log