美文网首页
liunx运行jar包命令几种方式+若依的自动启动脚本

liunx运行jar包命令几种方式+若依的自动启动脚本

作者: yichen_china | 来源:发表于2020-11-09 16:33 被阅读0次

    Linux 运行jar包命令如下:

    方式一:

    java -jar XXX.jar
    

    特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出

    那如何让窗口不锁定?

    方式二

    java -jar XXX.jar &
    

    &代表在后台运行。

    特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

    继续改进,如何让窗口关闭时,程序仍然运行?

    方式三

    nohup java -jar XXX.jar &
    

    nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

    当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

    方式四

    nohup java -jar XXX.jar >temp.txt &
    

    解释下 >temp.txt

    command >out.file   
    

    command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。

    可通过jobs命令查看后台运行任务

    jobs
    

    那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
    如果想将某个作业调回前台控制,只需要 fg + 编号即可。

    fg 23
    
    

    我写的一个若依启动脚本

    全部服务启动命令 ruoyicloud.sh -a start -v -2.2.0
    单个服务启动命令 ruoyicloud.sh -a start -n ruoyi-getaway -v -2.2.0
    全部停止命令 ruoyicloud.sh -a stop -v -2.2.0
    单个停止命令 ruoyicloud.sh -a stop -n ruoyi-getaway -v -2.2.0
    a=执行方法
    n=服务名字
    v=服务版本号
    ruoyicloud.sh

    #!/bin/bash
    #执行方法 start|stop
    
    mulu=$(dirname $(readlink -f $0))
    a=
    # 执行的名字,如果只对某个服务操作需要写服务名字不含版本号和.jar后缀。
    n=
    #执行版本号执行的时候会拼接成   名字-版本号.jar
    v="-2.2.0"
    # 'ruoyi-modules-job' 'ruoyi-visual-monitor'
    arr=('ruoyi-gateway ruoyi-auth' 'ruoyi-modules-system' 'ruoyi-modules-gen')
    while getopts ":v:n:a:" opt
    do
        case $opt in
            n)
            n=$OPTARG
            arr=($OPTARG)
            echo "当前操作应用:$OPTARG"
            ;;
            v)
            v=$OPTARG
            echo "版本号:$OPTARG"
            ;;
            a)
            a=$OPTARG
            echo "操作方法:$OPTARG"
            ;;
            ?)
            echo "未知参数,-v 2.0.0 -n nginx -i start|stop"
            exit 1;;
        esac
    done
    
    
    function stopjar(){
        PID=$(ps -ef | grep $1.jar | grep -v grep | awk '{ print $2 }')
        if [ -z "$PID" ]
        then
        echo $1 is already stopped
        else
        echo "stop $1.jar kill -9 $PID"
        kill -9 $PID
        fi
    }
    function startjar(){
        nohup java -Dfile.encoding=utf-8 -jar $1.jar >$1.out 2>&1 &
    
    }
    function stop(){
            length=${#arr}
        echo "停止服务:$length"
        # for 遍历
        for item in ${arr[*]}
        do
         echo "stop" $item$v
         stopjar $item$v
        done
    }
    
    function start(){
        length=${#arr}
        echo "开始服务:$length"
        # for 遍历
        for item in ${arr[*]}
        do
         echo "start" $mulu/$item$v
         startjar $mulu/$item$v
        done
    }
    echo "$a"
    $a
    

    相关文章

      网友评论

          本文标题:liunx运行jar包命令几种方式+若依的自动启动脚本

          本文链接:https://www.haomeiwen.com/subject/xibtbktx.html