zoukankan      html  css  js  c++  java
  • 关闭窗口即关闭程序_Java项目不挂断运行,即当账户退出或终端关闭时,程序仍然运行,并附上执行脚本.

    把打包好的jar包上传服务器以后,直接运行java -jar+文件名 命令即可以完成启动。

    若需要在公网上如何不挂断开启程序,可以使用nohup java -jar +文件名 & 命令,其中nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行;&代表在后台运行。

    若想关闭程序,可以使用netstat –pan |grep 端口号命令查看端口占用情况,

    使用kill pid命令终止进程,关闭程序。

    项目在公网运行起来以后,需要在公网服务器开通项目端口号,即可通过其他电脑浏览器访问接口。

    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 >xxx.txt &
    >xxx.txt是将command的输出重定向到txt文件

    可通过jobs命令查看后台运行任务
    jobs
    那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
    如果想将某个作业调回前台控制,只需要 fg + 编号即可。
    fg 23
    查看某端口占用的线程的pid
    netstat -nlp |grep : 8080

    整理好的脚本如下,用的时候直接替换名称即可,例如启动使用 ./xxx.sh start :
    ———————————————————————————————————————————————————

    #!/bin/sh
     
    WEB_APP_NAME=xxx-0.0.1-SNAPSHOT
    JAR_NAME=${WEB_APP_NAME}.jar
    PID=${WEB_APP_NAME}.pid
     
    #使用说明,用来提示输入参数
    usage() {
        echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
        exit 1
    }
     
    #检查程序是否在运行
    is_exist(){
        pid=`ps -ef|grep ${JAR_NAME}|grep -v grep|awk '{print $2}'`
        #如果不存在返回1,存在返回0
        if [[ -z "${pid}" ]]; then
            return 1
        else
            return 0
        fi
    }
     
    #启动方法
    start(){
        is_exist
        if [[ $? -eq "0" ]]; then
            echo ">>> ${JAR_NAME} is already running PID=${pid} <<<"
        else
            nohup java -jar ${JAR_NAME} >/dev/null 2>&1 &
            echo $! > ${PID}
            echo ">>> start ${JAR_NAME} successed PID=$! <<<"
        fi
    }
     
    #停止方法
    stop(){
        pid_file=$(cat ${PID})
        if [[ -z ${pid_file} ]];then
        echo ">>> ${JAR_NAME} pid file is not exist <<<"
        else
        echo ">>> ${JAR_NAME} PID = ${pid_file} begin kill ${pid_file} <<<"
        kill ${pid_file}
        rm -rf ${PID}
        sleep 2
        fi
        is_exist
        if [[ $? -eq "0" ]]; then
            echo ">>> ${JAR_NAME} exist PID = ${pid} begin kill -9 ${pid} <<<"
            kill -9 ${pid}
            sleep 2
            echo ">>> ${JAR_NAME} process stopped <<<"
        else
            echo ">>> ${JAR_NAME} is not running <<<"
        fi
    }
     
    #输出运行状态
    status(){
        is_exist
        if [[ $? -eq "0" ]]; then
            echo ">>> ${JAR_NAME} is running PID is ${pid} <<<"
        else
            echo ">>> ${JAR_NAME} is not running <<<"
        fi
    }
     
    #重启
    restart(){
        stop
        start
    }
     
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
     
    case "$1" in
        "start")
            start
            ;;
        "stop")
            stop
         ;;
        "status")
            status
            ;;
        "restart")
            restart
            ;;
        *)
            usage
            ;;
    esac
    exit 0


     

  • 相关阅读:
    链表实现python list数据类型
    python图形图像处理--验证码的制作
    Java封装、继承和抽象的实例
    C#指定几所城市的天气预报
    我的第一个全站项目纪实
    activiti集成spring
    刷新token并继续之前的请求
    微信小程序开发准备
    zookeeper和dubbo
    zookeeper
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/15545429.html
Copyright © 2011-2022 走看看