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