【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包

  1. 在Linux系统中先安装java的JDK

  2. 然后编写下列service.sh脚本,并根据自己的需求只需要修改export的log_path、exec_cmd参数即可
    1.

    bash 复制代码
    # 配置运行日志输出的路径
    export log_path=/usr/local/project/study-pro/logs
    # 当前服务运行的脚本命令
    export exec_cmd="nohup /usr/local/project/openjdk-8/bin/java -jar /usr/local/project/study-pro/study-pro-0.0.1-SNAPSHOT.jar"
    # 获取脚本所在的目录
    CUR_DIR=$(dirname $0)
    # 进入到该目录运行,这样可以规避绝对路径的问题,你的脚本迁移到任何目录都可以正常运行
    cd ${CUR_DIR}
    
    # 该函数running正常退出,not running则退出非0值
    check_server_is_running() {
        [[ ! -f "pid" ]] && touch pid
        
        # 获取
        PID=$(cat pid)
        
        # 首先判断pid是否存在
        if [ "${PID}" = "" ]
        then
            echo "server is not running."
            return 1
        fi
        
        # 再判断指定的PID是否在当前目录运行,防止因历史异常原因遗留了失效PID,正好该PID又被其他进程占用,造成误杀。
        if [[ -d /proc/${PID}/cwd ]] && ls -ahl /proc/${PID}/cwd | grep -q "${CUR_DIR}"
        then
            echo "server is running."
            return 0
        else
            # 清空失效的进程号并异常退出
            echo "" > pid
            return 1
        fi
    }
    
    start() {
        # 启动前判断日志目录是否存在,不存在就创建
        [[ ! -d "${log_path}" ]] && mkdir -p ${log_path}
        
        # 启动服务
        ${exec_cmd} > ${log_path}/start.log 2>&1 &
        
        # 保存PID,以供stop使用
        PID=$!
        echo "server start succ, PID=${PID}!"
        echo "${PID}" > pid
    }
    
    
    
    stop() {
        # get pid
        PID=$(cat pid)
        kill -9 ${PID}
    }
    
    
    case C"$1" in
        Cstart)
            # ||:前一个运行失败后,才运行后面一个脚本。单进程执行。若遇到第一个执行成功的脚本后,后面的脚本不再执行。
            check_server_is_running || start
            echo "start done."
            ;;
        Cstop)
            # &&:前一个运行成功后,才运行下一个。单进程执行,若中途某个脚本执行报错,后面的脚本不再执行
            check_server_is_running && stop
            echo "stop done."
            ;;
        Crestart)
            check_server_is_running && stop 
            check_server_is_running || start 
            echo "restart done."
            ;;
        C*)
            echo "Usage: $0 {start|stop|restart}"
            ;;
    esac
  3. 如果脚本没有可执行权限,需要先赋权再执行命令
    1.

    bash 复制代码
    chmod -R +x service.sh
  4. 在脚本的目录中执行下列命令即可正常运行、停止、重启相应的Spring Boot服务
    1.

    |----------------------|------|
    | 执行脚本 | 说明 |
    | ./service.sh start | 服务启动 |
    | ./service.sh stop | 服务停止 |
    | ./service.sh restart | 服务重启 |

  5. 当前示例执行服务启动命令,可以看出服务已经可以正常启动并访问了
    1.

    bash 复制代码
    ./service.sh start
相关推荐
光依旧15 分钟前
MCP实战手记系列(五):让工具返回一个能点的界面(文末附github源码链接)
java·spring ai·前端集成·mcp·mcp apps
codigger17 分钟前
服务器又卡了?一篇讲透 Linux 性能排查(基础四件套 + perf/strace/火焰图)
linux·后端·性能优化
APIshop20 分钟前
淘宝选品接口实战:从召回、详情、佣金到转链的 Java 接入笔记
java
+VX:Fegn089528 分钟前
计算机毕业设计|基于java+ vue共享单车信息系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
泡茶喝茶写代码36 分钟前
量化数据进阶:多维实战篇(第 11 篇):历史涨跌停价:涨跌停序列与止损线测算
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
顶点多余38 分钟前
9.18 面试题总结 --- 绿盟
linux·面试
景熙55231 小时前
单体项目编写思路和落地形式
java·开发语言
Ivanqhz1 小时前
Slope One 算法详解:与矩阵分解、共现矩阵的异同
java·服务器·网络·人工智能·深度学习
挖掘狂人1 小时前
当生产环境"变慢",我用这套 perf + strace 30 分钟定位瓶颈
linux·运维·性能优化
Bs_MoneyMagnet1 小时前
基于springboot+vue的非遗物质文化遗产系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计