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) 即可