spring boot项目Linux情况jar包启动shell脚本

打印 上一主题 下一主题

主题 980|帖子 980|积分 2940

使用场景

在linux情况,启动小型spring boot项目时,我们总必要一些操纵步骤才能将程序启动:

  • 查找已启动的线程id
  • 杀掉线程id
  • 使用下令启动项目
我们可以讲上述下令集成的shell脚本文件中,运行shell脚本文件,快速实行上述步骤,启动程序。
shell脚本文件示例

  1. #!/bin/bash
  2. # 定义应用路径和日志路径
  3. APP_JAR="/app/jar/xxx.jar"
  4. LOG_FILE="/app/logs/log.out"
  5. # 查找与指定JAR包关联的Java进程PID
  6. PID=$(ps -ef | grep java | grep "$APP_JAR" | grep -v grep | awk '{print $2}')
  7. # 终止现有进程
  8. if [ -n "$PID" ]; then
  9.   echo "正在终止进程 $PID..."
  10.   kill -9 $PID
  11.   sleep 2  # 等待进程完全终止[[2]]
  12. fi
  13. # 确保日志目录存在
  14. mkdir -p "$(dirname "$LOG_FILE")"
  15. # 启动应用并指定JVM参数
  16. echo "正在启动 $APP_JAR..."
  17. nohup java -jar -Xms2048m -Xmx4096m "$APP_JAR" > "$LOG_FILE" 2>&1 &
  18. echo "应用启动成功,日志输出至:$LOG_FILE"
复制代码
将上述文件保存为start.sh文件,放到Linux服务器上,更新完成jar包后,直接使用下令./start.sh实行shell脚本,即可完成项目的启动
可能遇见的问题

1. 无权限

  1. -bash: ./start.sh: Permission denied
复制代码
遇见上述问题的原因是因为用户没有操纵start.sh文件的权限
使用chomd下令为文件添加权限

  1. chmod u+x start.sh
  2. # chmod用法
  3. chmod [who] [opt] [mode] 文件/目录名
  4. who代表对象,是以下字母中的一个或组合:
  5. u:User,文件或文件夹的拥有者。
  6. g:Group,文件或文件夹的所属群组。
  7. o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
  8. a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
  9. opt则是代表操作,可以为:
  10. +:添加某个权限
  11. -:取消某个权限
  12. =:赋予给定的权限,并取消原有的权限
  13. mode则代表权限:
  14. r:可读
  15. w:可写
  16. x:可执行
复制代码
2. Shell脚本的行尾格式不兼容

  1. -bash: ./start.sh: /bin/bash^M: bad interpreter: No such file or directory
复制代码
出现上述问题原因紧张是因为Shell脚本的行尾格式不兼容
通过 Vim 修改文件格式


  • 打开脚本
  1. vim start.sh
复制代码

  • 检察当前格式
  1. :set ff
复制代码
若显示 fileformat=dos,则需转换。

  • 修改为Unix格式并保存
  1. :set ff
  2. =unix  :wq  
复制代码
.

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表