美文网首页
linux 2>&1 &是什么

linux 2>&1 &是什么

作者: 南风nanfeng | 来源:发表于2018-03-27 18:07 被阅读6次

    linux常见输出到文件命令行,如:find /data -name 'login' -print > find.dt 2>&1 &
    前面很好理解,查找data目录下的login文件,>表示重定向输入到文件,关键就是后面的2>&1 &,单独一个&表示后台执行任务,就看2>&1代表什么?

    下面几个基本符号及其含义
    0 表示stdin标准输入
    1 表示stdout标准输出
    2 表示stderr标准错误

    从command>/dev/null说起

    command命令行产生的输入重定向到/dev/null,后者表示一个空设备文件,相当于不输出,所以command>/dev/null相当于command 1>dev/null。再看2>&1就很好理解,2是标准错误,1是标准输出,等价于把标准错误重定向到标准输出,为何是&1而不是1,&等效于标准输出。这里有点不好理解,先看下面。

    command>/dev/null 2>/dev/null 与 command>/dev/null 2>&1的区别

    以上分析说明,标准输出、标准错误都重定向到/dev/null,二者看似等价,实际上有些差别,区别就在于前者只打开一次文件/dev/null,后者会打开/dev/null两次,并导致stdout被stderr覆盖。&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的/dev/null。从IO效率上来讲,command 1>a 2>&1比command 1>a 2>a的效率更高。

    相关文章

      网友评论

          本文标题:linux 2>&1 &是什么

          本文链接:https://www.haomeiwen.com/subject/xkmscftx.html