「linux」后台启动nohup经常跟的>/dev/null 2>&1是什么意思

https://www.cnblogs.com/wangsongbai/p/10215155.html

我们在写启动脚本的时候,会用nohup &,这个大家都知道,但是经常会有 >/dev/null 2>&1。比如

nohup java -jar xxx.jar >/dev/null 2>&1 &

这个到底表示什么意思

几个基本符号及其含义

  • /dev/null 表示空设备文件
  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。

对于2 ,表示标准错误,stderr。

2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null

可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.

再说2>&1?

在>左边的2,表示stderr标准错误。不需要加&

但是在>右边的1必须加&,才表示stdout标准输出

如果不加&,表示的是文件名

另外>左边如果不加,默认是1

测试

ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;

ls xxx 2>1测试,没有xxx这个文件的错误输出到了文件1中;

ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。

我们在写启动脚本的时候,会用nohup &,这个大家都知道,但是经常会有 >/dev/null 2>&1。比如

nohup java -jar xxx.jar >/dev/null 2>&1 &

这个到底表示什么意思

几个基本符号及其含义

  • /dev/null 表示空设备文件
  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。

对于2 ,表示标准错误,stderr。

2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null

可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.

再说2>&1?

在>左边的2,表示stderr标准错误。不需要加&

但是在>右边的1必须加&,才表示stdout标准输出

如果不加&,表示的是文件名

另外>左边如果不加,默认是1

测试

ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;

ls xxx 2>1测试,没有xxx这个文件的错误输出到了文件1中;

ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。

猜你喜欢

转载自www.cnblogs.com/kelelipeng/p/10685910.html
今日推荐