nohup java -jar后台启动,参数“> /dev/null 2>&1“的含义。

nohup命令

用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下。

语法格式

nohup Command [ Arg … ] [ & ]

参数说明

Command: 要执行的命令。
Arg: 一些参数,可以指定输出文件。
&: 让命令在后台执行,终端退出后命令仍旧执行。

实例

nohup java -server -Xms512m -Xmx512m -XX:PermSize=64m -jar xxx.jar --spring.profiles.active=test > /dev/null 2>&1 &

-server -Xms512m -Xmx512m -XX:PermSize=64m
指定内存大小

xxx.jar
你的jar包名称

–spring.profiles.active=test
运行环境为test

> /dev/null 2>&1
忽略输出文件

“> /dev/null 2>&1”

这是我们今天主要说的部分。

通常情况下,总是有三个文件会被打开。它们各自对应的流:

0:标准输入流 stdin
1:标准输出流 stdout
2:标准错误流 stderr

>:将流输出到文件

同:1 >,默认情况下就是1,即标准输出,一般都省略。

/dev/null:这个文件是一个无底洞,无法打开,相当于是一个垃圾站。

也就是将所有产生的日志都丢弃,因为我们项目中logback.xml已经指定了日志的格式和输出位置。

2>&1:代表将标准错误2重定向到标准输出1

标准输出和标准错误都输出到/dev/null。如果是2>1的话,代表将标准错误输出到文件1,而不是重定向到标准输出流。

为什么要这样写,我们看一下其它写法:

“2>&1 > /dev/null”

标准错误先重定向到标准输出,此时标准输出还是在终端,> /dev/null后标准输出流输出到文件,但是标准错误仍在终端。

“> /dev/null 2 > /dev/null”

这样写可以达到我们想要的目的,但是这样会有一个问题,标准输出流1和标准错误流2都将各自输出到文件,文件会被打开两次。从效率上讲,原来的写法要更高效。

另外说一句>和>>的区别

1 >

将标准输出流输出到文件,覆盖文件原有内容。

1 >>

将标准输出流输出到文件,追加到文件的末尾。

参考文章:

6子Shell中的>/dev/null 2>&1 与 2>&1 >/dev/null 与&>/dev/null 的区别
人在码途~nohup /dev/null 2>&1 含义详解
白小白001【tips】linux中 > 和 >> 和 < 的区别
嚆嚆先生Linux nohup命令详解

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值