如您需要技术咨询、解决方案定制、故障排除、运维监控等服务,可联系ericwcn#at#163.com。

Linux Shell /dev/null 2>&1 含义

Linux 立杰 673℃ 0评论

执行命令是

/home/admin/demo.sh >/dev/null 2>&1 &

对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null
最后一个& 是让程序在后台执行。

为何2>&1要写在后面?

command > file 2>&1

首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

 command 2>&1 >file

2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

用strace可以看到:
1. command > file 2>&1
这个命令中实现重定向的关键系统调用序列是:

open(file) == 3
   dup2(3,1)
   dup2(1,2)
   

2. command 2>&1 >file
这个命令中实现重定向的关键系统调用序列是:

   dup2(1,2)
   open(file) == 3
   dup2(3,1)

转载请注明:知识库 » Linux Shell /dev/null 2>&1 含义

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址