java关闭窗口即关闭程序的语录_Java项目不挂断运行,即当账户退出或终端关闭时,程序仍然运行,并附上执行脚本...

本文详细介绍了在Linux环境下如何启动、停止、检查状态以及重启Java jar应用程序。通过java-jar命令行,结合nohup和amp符号实现程序后台不挂断运行,即使关闭SSH窗口也能保持程序持续运行。此外,还提供了使用netstat和kill命令来管理和关闭程序,并给出了一段完整的shell脚本示例,用于自动化管理Java应用的启动、停止、状态查询和重启操作。
摘要由CSDN通过智能技术生成

把打包好的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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值