nohup java -jar后台启动,参数"> /dev/null 2>&1"的含义。
- nohup命令
- 语法格式
- 参数说明
- 实例
- "> /dev/null 2>&1"
- >:将流输出到文件
- /dev/null:这个文件是一个无底洞,无法打开,相当于是一个垃圾站。
- 2>&1:代表将标准错误2重定向到标准输出1
- 为什么要这样写,我们看一下其它写法:
- "2>&1 > /dev/null"
- "> /dev/null 2 > /dev/null"
- 另外说一句>和>>的区别
- 1 >
- 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 >>
将标准输出流输出到文件,追加到文件的末尾。