jar包在后台运行,windows和Linux两种方式

 转载出处: https://blog.csdn.net/qq_37758497/article/details/101286009

springboot项目提供了更好的启动方式,内嵌了tomcat。我们只需要java -jar即可启动我们的项目,给我们提供了更方便,更快捷的方法。

       但是当我们运行5个以上以后还是会出现一些问题的,比如当请求过多时,会产生缓存。后面的请求请求不进来,需要通过ctrl+z来消除缓存。但毕竟不是长久之计,那么,有没有好的方式来处理呢?

启动

编写脚本,命名为start8081.bat

@echo off
set path=D:\workspace\soft\false\jre1.8\bin
START "middle" "%path%\javaw" -jar middleware-2.0.0-SNAPSHOT.jar
pause

 

双击此文件

关闭即可。

输入项目路径,可以发现项目已启动。

关闭

关闭1:

打开任务管理器,可以看到java进程,如图:

选中结束任务即可。

如果只有一个jar包运行,这样关闭是可以的。如果多个,那肯定是不行的。

关闭2:

查看端口占用:netstat -aon|findstr "49157",例如我的是8081

记住pid是1192

停止对应端口,taskkill /pid 10764 -f

在访问项目地址,已经关闭

关闭3:

这样每次查找pid,停止对应端口的pid。如果有十个项目,需要查找并关闭10次。还是觉得麻烦,有没有更好的方法?答:必须有。

编写脚本,命名为stop8081.bat

@echo off
chcp 65001
set port=8081
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
echo kill the process %%m who use the port %port%
echo 正在关闭,请等待 %%m
taskkill /f /pid %%m
)
Pause

 

自动寻找相应对口,并关闭。

如果多个,只需要点击对应的启动或关闭即可。

Linux后台运行命令

[root@iZ2zei8ft0h4q485kxwxjgZ babyshark]# nohup java -jar babyshark-0.0.1-SNAPSHOT.jar  > log.file  2>&1 &

上面的2 和 1 的意思如下:

0    标准输入(一般是键盘)
1    标准输出(一般是显示屏,是用户终端控制台)
2    标准错误(错误信息输出)

将运行的jar 错误日志信息输出到log.file文件中,然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。

669就表示运行的pid,netstat -anp可以查看到。

要想停止后台的进程的话,直接 kill -9 669(pid) 即可

 

 

 
posted @ 2021-11-25 10:59  LilLazy  阅读(421)  评论(0编辑  收藏  举报