所有展示的截图,示例的是 SpringBoot 项目打包好后的 jar 包,本示例以我自己的项目为例。
方式一
该种方式运行的,会被锁定在当前的窗口中,关闭窗口会关闭程序,Ctrl+C 也可以结束该程序
java -jar XXXX.jar
方式二
在 方式一 的基础上后面加上一个 &,表示在后台运行。当前窗口就可以继续其他操作,而不会被锁定;但关闭窗口会结束当前程序。
java -jar XXXX.jar &
方式三
在 方式二 的基础上前面加上一个 nohup,表示将不挂断当前运行命令,所以当账户退出,或终端关闭也是可以运行的。并且 nohup 命令执行作业的时候,默认条件下,该程序所有的输出会被重定向到 nohup.out 的文件中,除非指定了其他出文件。
nohup java -jar XXXX.jar &
看项目目录,会多一个 nohup.out 文件
打开文件,可以看到是刚刚输出在控制台的内容
方式四
在 方式三 的基础上后面加上指定的输出的文件,运行的程序就会打印到指定的文件中,而不会在屏幕上打印出来。
nohup java -jar XXXX.jar >/XXX/XXX &
目录下,多了一个文件 run_log_0.0.1.out 文件
在当前终端没有关闭的情况下,使用 jobs 可以查看后台正在运行的任务。
jobs
每个任务前面都有一个编号,可以使用 fg + 编号 将任务调回前台控制
fg 1
但是当前终端关闭后,再次开启使用命令 jobs 就看不到当前的任务了,不过如果是项目的话,会有端口的占用,你可以使用下面这个命令查看当前占用的任务
netstat -nlp |grep :8080
使用 kill + 进程号 关闭进程
kill 24396
参考博客:https://blog.csdn.net/qq_37859539/article/details/86498304