linux 退出 java -jar 后台执行

这里的linux退出,指的是linux(退出管理工具),非注销登陆。

java -jar xxx.jar 即刻启动jar包,能看到输出的日志。linux 退出后会关闭该执行。

java -jar xxx.jar & 即刻在后台启动jar包,看不到到输出的日志。linux 退出后会关闭该执行。

如何保证jar包执行后,退出linux,jar包不会随之关闭,导致项目无法访问

此处我们需要使用到nohup

nohup

用途:不挂断的运行命令

语法:nohup Command [ Arg … ] [ & ]

&

用途:在后台运行

一般两个一起用

nohup command &

egnohup java -jar xxx.jar >log.txt &。这种方式会在jar目录下生成log.txt。这里我们先查看当前项目是否还在运行:ps -ef | grep xxx.jar,可以看到如下结果(例图):

 

 

 

 grep 类型 的是默认的,我们主要处理的是java类型的,执行kill -9 11858 

再次执行ps -ef | grep xxx.jar就只能查到grep 类型的了。

后台启动时 使用  nohup java -jar xxx.jar >/log/log.txt 2>&1 &

第一个>后面是你的入职输出路径

第二个> 后面的 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。

最后一个& , 是让该命令在后台执行。

对 于& 1 更准确的说应该是文件描述符 1,

1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.

他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),

其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.

其中0 表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,

然后扔到/log 下面去。

/log/log.txt 2>&1 &

是将command的输出重定向到/log/log.txt ,即输出的内容不会打印到当前屏幕,而是输出到了/log/log.txt 文件中。

标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
屏蔽输出,起到禁止输出作用:/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;

如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
“> /log/log.txt 2>&1” :表示将 stdout 和 stderr 合并后重定向到 /log/log.txt

 

启动指派给指定的端口:

nohup java -jar xxx.jar --server.port:80>/log/log.txt 2>&1 &

 

posted @ 2021-01-11 10:37  加了冰的才叫可乐  阅读(2185)  评论(0编辑  收藏  举报