关闭窗口即关闭程序_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

 


 

上一篇:linux后台执行命令:&和nohup


下一篇:nohup & -- Linux后台挂起要点总结