四零语境后端代码仓库
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.

174 lines
3.8 KiB

  1. # Java应用启动/重启脚本使用说明
  2. ## 概述
  3. `restart-java-app.sh` 是一个用于在Linux系统下管理Java JAR包应用的Shell脚本。它可以自动检测应用是否运行,并提供启动、停止、重启等功能。
  4. ## 功能特性
  5. - ✅ 自动检测应用运行状态
  6. - ✅ 优雅停止应用(先发送TERM信号,超时后强制停止)
  7. - ✅ 智能端口检测,避免端口冲突
  8. - ✅ PID文件管理,确保进程跟踪准确
  9. - ✅ 彩色日志输出,便于查看状态
  10. - ✅ 详细的错误处理和状态反馈
  11. - ✅ 支持多种命令选项
  12. ## 配置参数
  13. 在使用脚本前,需要修改脚本开头的配置参数:
  14. ```bash
  15. # ========================================
  16. # 配置参数 - 请根据实际情况修改
  17. # ========================================
  18. JAR_NAME="your-app.jar" # JAR包名称
  19. PORT=8080 # 应用端口号
  20. ```
  21. ### 主要配置项
  22. | 参数 | 说明 | 示例 |
  23. |------|------|------|
  24. | `JAR_NAME` | JAR包文件名 | `"my-spring-boot-app.jar"` |
  25. | `PORT` | 应用监听端口 | `8080` |
  26. ### 可选配置项
  27. | 参数 | 说明 | 默认值 |
  28. |------|------|--------|
  29. | `JAVA_OPTS` | JVM启动参数 | `"-Xms512m -Xmx1024m"` |
  30. | `LOG_FILE` | 日志文件名 | `"app.log"` |
  31. | `PID_FILE` | PID文件名 | `"app.pid"` |
  32. ## 使用方法
  33. ### 1. 设置执行权限
  34. ```bash
  35. chmod +x restart-java-app.sh
  36. ```
  37. ### 2. 基本用法
  38. ```bash
  39. # 重启应用(默认操作)
  40. ./restart-java-app.sh
  41. # 或者明确指定重启
  42. ./restart-java-app.sh restart
  43. ```
  44. ### 3. 其他命令
  45. ```bash
  46. # 启动应用
  47. ./restart-java-app.sh start
  48. # 停止应用
  49. ./restart-java-app.sh stop
  50. # 查看应用状态
  51. ./restart-java-app.sh status
  52. # 显示帮助信息
  53. ./restart-java-app.sh help
  54. ```
  55. ## 命令详解
  56. ### start - 启动应用
  57. - 检查JAR文件是否存在
  58. - 检查端口是否被占用
  59. - 启动Java应用
  60. - 等待应用完全启动
  61. - 验证端口监听状态
  62. ### stop - 停止应用
  63. - 查找应用进程PID
  64. - 发送TERM信号优雅停止
  65. - 等待最多30秒
  66. - 超时后强制停止(KILL信号)
  67. - 清理PID文件
  68. ### restart - 重启应用
  69. - 先执行stop操作
  70. - 等待2秒
  71. - 再执行start操作
  72. ### status - 查看状态
  73. - 显示应用运行状态
  74. - 显示进程PID
  75. - 显示端口监听状态
  76. ## 输出说明
  77. 脚本使用彩色输出来区分不同类型的消息:
  78. - 🔴 **红色**: 错误信息
  79. - 🟢 **绿色**: 成功信息
  80. - 🟡 **黄色**: 警告信息
  81. - 🔵 **蓝色**: 操作信息
  82. ## 文件说明
  83. 脚本运行时会创建以下文件:
  84. - `app.log`: 应用运行日志
  85. - `app.pid`: 应用进程PID文件
  86. ## 常见问题
  87. ### Q: 提示"JAR文件不存在"
  88. **A**: 检查`JAR_NAME`配置是否正确,确保JAR文件在脚本同一目录下。
  89. ### Q: 提示"端口已被占用"
  90. **A**: 检查是否有其他应用占用了配置的端口,或修改`PORT`配置。
  91. ### Q: 应用启动失败
  92. **A**: 查看`app.log`日志文件,检查具体错误原因。
  93. ### Q: 无法停止应用
  94. **A**: 脚本会先尝试优雅停止,30秒后自动强制停止。
  95. ## 系统要求
  96. - Linux操作系统
  97. - Bash Shell
  98. - Java运行环境
  99. - 网络工具(netstat、ss或lsof中的任意一个)
  100. ## 注意事项
  101. 1. 确保脚本有执行权限
  102. 2. 确保Java环境已正确安装
  103. 3. 确保JAR文件路径正确
  104. 4. 建议在生产环境使用前先在测试环境验证
  105. 5. 定期检查日志文件大小,避免占用过多磁盘空间
  106. ## 示例
  107. 假设你有一个名为`my-app.jar`的Spring Boot应用,需要在8080端口运行:
  108. 1. 修改脚本配置:
  109. ```bash
  110. JAR_NAME="my-app.jar"
  111. PORT=8080
  112. ```
  113. 2. 启动应用:
  114. ```bash
  115. ./restart-java-app.sh start
  116. ```
  117. 3. 查看状态:
  118. ```bash
  119. ./restart-java-app.sh status
  120. ```
  121. 输出示例:
  122. ```
  123. [2024-01-15 10:30:15] 应用正在运行
  124. [2024-01-15 10:30:15] PID: 12345
  125. [2024-01-15 10:30:15] 端口: 8080
  126. [2024-01-15 10:30:15] 端口状态: 正在监听
  127. ```