linux中启动SpringBoot分为“前台启动”和“后台启动”。前台启动是指通过命令直接运行SpringBoot项目jar包,并且运行打印日志直接显示在我们所看到的前台,页面一旦关闭就会停止或改变;而后台启动则是通过命令或脚本启动SpringBoot项目,是项目能够独立的在后台运行,不会打扰我们其他操作。

一、普通命令

这种启动方式属于“前台启动”,下面两种方法都属于“后台启动”

java -jar app.jar(格式:java -jar jar包名.jar)

二、后台命令

该命令用于后台启动项目,nohup(no hang up)“不挂断”

nohup java -jar app.jar &

进阶版(可以指定日志输出)

nohup java -jar app.jar > app.log 2>&1 &
  • app.log,用于存储日志文件
  • 2>&1,将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中
  • &,后台启动
  • 命令中的数字
    • 0(STDIN_FILENO)标准输入(键盘)
    • 1(STDOUT_FILENO)标准输出(用户终端控制台)
    • 2(STDERR_FILENO)标准错误(报错信息)

关闭的话需要先查询服务的进程号,然后关闭,如下

ps -ef | grep app.jar //查询出的第二项应该就是进程号
kill -15 进程号 或 kill -9 进程号(强制停止)

三、脚本

在jar包同目录下执行vi app.sh,按i进行编辑一个app.sh脚本文件

然后添加代码如下(使用之前需要修改APP的值,改为自己需要启动的包名)

#!/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

然后执行点击Esc,然后输入:wq进行保存

执行chmod +x app.sh使脚本具有执行权限

使用命令:

  • ./app.sh start,启动项目
  • ./app.sh stop,停止项目
  • ./app.sh check,检查项目运行状态
  • ./app.sh kill,强制关闭项目
  • ./app.sh ipid,输出进程号
Logo

更多推荐