Springboot以jar包方式部署运行

哈根达斯
2021-07-10 / 0 评论 / 140 阅读 / 正在检测是否收录...

springboot打成jar包后。我们需要将jar在linux环境部署,前提linux系统已安装jdk等运行环境。

springboot_jar包运行.jpg

文章目录索引

启动方式一:

java -jar app.jar 前台启动

启动方式二:

nohup java -jar app.jar & 后台启动

区别:前台启动ctrl+c就会关闭程序,后台启动ctrl+c不会关闭程序

制定控制台的标准输出

java -jar app.jar > catalina.out 2>&1 &

catalina.out将标准输出指向制定文件catalina.out
2>&1 输出所有的日志文件
& 后台启动
对于上面的命令的解释:
bash 中 0、1、2 三个数字分别代表 STDIN_FILENO 、 STDOUT_FILENO 、STDERR_FILENO ,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。

数字 含义
0 标准输入(一般是键盘)
1 标准输出(一般是显示屏,准确的说是用户终端控制台)
2 标准错误(出错信息输出)

启动方式三:

编写shell脚本启动

在app.jar 同目录下编辑app.sh脚本文件
内容如下:

#!/bin/sh
#功能简介:启动app.jar 文件
#注意:在sh文件中=赋值,左右两侧不能有空格


APP=app
APP_NAME=${APP}".jar"

log_dir=/home/jar_logs/
log_file=/home/jar_logs/app.log

command=$1

# 启动
function start(){
    # 日志文件夹不存在,则创建
    if [ ! -d "${log_dir}" ];then
        mkdir "${log_dir}"
    fi

    rm -f tpid
    nohup java -jar ${APP_NAME} 1>/dev/null 2>"${log_file}" &
    echo $! > tpid
    check
}

# 停止
function stop(){
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'stop process...'
        kill -15 $tpid
    fi

    sleep 5

    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Kill Process!'
        kill -9 $tpid
    else
        echo 'Stop Success!'
    fi
}

# 检查
function check(){
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'App is running.'
    else
        echo 'App is NOT running.'
    fi

}

# 强制kill进程
function forcekill(){
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

    if [ ${tpid} ]; then
        echo 'Kill Process!'
        kill -9 $tpid

    fi

}

# 输出进程号
function showtpid(){
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'process '$APP_NAME' tpid is '$tpid
    else
        echo 'process '$APP_NAME' is not running.'
    fi
}

if [ "${command}" ==  "start" ]; then
    start

elif [ "${command}" ==  "stop" ]; then
     stop

elif [ "${command}" ==  "check" ]; then
     check

elif [ "${command}" ==  "kill" ]; then
     forcekill

elif [ "${command}" == "tpid" ];then
     showtpid

else
    echo "Unknow argument...."
fi

编写完成后需要将脚本文件设置超级管理员权限

chmod +x app.sh

之后使用./app.sh start/stop等命令启动即可

./app.sh start/stop

作者:蓝胖子CC7
链接:https://www.jianshu.com/p/717afc0e1708
来源:简书

0

评论 (0)

取消