【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
相关推荐
菩提祖师_1 天前
基于Java的物联网智能交通灯控制系统
java·开发语言·物联网
oMcLin1 天前
Ubuntu 22.04 系统中不明原因的磁盘 I/O 高负载:如何利用 iotop 和 systemd 排查优化
linux·运维·ubuntu
fengyehongWorld1 天前
Linux systemd 与 systemctl 命令
linux·运维·服务器
公众号:ITIL之家1 天前
服务价值体系重构:在变化中寻找不变的运维本质
java·运维·开发语言·数据库·重构
自在极意功。1 天前
Spring 中 Bean 的生命周期
java·spring·bean生命周期
zhaokuner1 天前
01-领域与问题空间-DDD领域驱动设计
java·开发语言·设计模式·架构
Howrun7771 天前
不可重入函数Non-Reentrant & 可重入函数Reentrant
linux·服务器
、BeYourself1 天前
Spring AI RAG 系统文档加载
java·后端·spring·springai
Thera7771 天前
Linux 核心绑定(CPU Affinity)详解:原理、方法与优缺点分析
linux·运维·服务器
cike_y1 天前
Spring:代理模式之静态代理&动态代理
java·后端·spring·代理模式