阿里云发布Java web项目,linux让程序永久运行,关闭终端后也后台运行

nohup

是 no hang up 的缩写,就是不挂断的意思。

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。

命令案例:

nohup command > myout.file 2>&1 &

在上面的例子中,
0 – stdin (standard input),
1 – stdout (standard output),
2 – stderr (standard error) ;
2>&1是将标准错误[2]重定向到标准输出[&1],标准输出[&1]再被重定向输入到myout.file文件中。最后再加上一个&表示后台运行。

nohup和&的区别

& : 指在后台运行

nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行

&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出

那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &
这样就能使命令永久的在后台执行
例如:

  1. sh test.sh &
    将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。
  2. nohup sh test.sh
    将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
  3. nohup sh test.sh &
    将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。

后台永久发布Java web项目

当我将springboot程序达成jar包后,放入linux中,后台永久发布项目,关闭终端,关闭远程连接项目都在运行。
命令为
nohup java -jar xxxx.jar > myout.file 2>&1 &
或者不指定输出文件名,会默认创建nohup.out文件
nohup java -jar xxxx.jar &

完成后,可以输入
jobs命令查看,注意此命令有会话的含义,如果关闭远程连接,再次连接远程连接,属于第二个会话,此命令查不出来之前的程序的。
可以利用top命令查看后台程序
阿里云发布Java web项目,linux让程序永久运行,关闭终端后也后台运行

想关的话,kill PID
比如我这个输入
kill 9603就关了

我重新再开启一下:
阿里云发布Java web项目,linux让程序永久运行,关闭终端后也后台运行
阿里云发布Java web项目,linux让程序永久运行,关闭终端后也后台运行
扩展命令,可以动态监控输出的文件日志
tailf 文件
阿里云发布Java web项目,linux让程序永久运行,关闭终端后也后台运行

说到监控日志了,刚好我又发现了我一个地方写到thymeleaf坑里了
阿里云发布Java web项目,linux让程序永久运行,关闭终端后也后台运行
报错了,说是/login页面解析错误,或者不存在
解决方式是
阿里云发布Java web项目,linux让程序永久运行,关闭终端后也后台运行