LINUX 标准错误输出重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX 标准错误输出重定向相关的知识,希望对你有一定的参考价值。

参考技术A 用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

  如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

  如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回下列出口值:

  126 可以查找但不能调用 Command 参数指定的命令。

  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

用途:在后台运行

一般两个一起用

3.为什么呢 2>&1 要写在后面?

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

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

用strace可以看到:

这个命令中实现重定向的关键系统调用序列是:

open(file) == 3

dup2(3,1)

dup2(1,2)

这个命令中实现重定向的关键系统调用序列是:

dup2(1,2)

open(file) == 3

dup2(3,1)

注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

这里的2和>之间不可以有空格,2>是一体的时候才表示错误输出。

linux学习第一周;标准输入输出和错误重定向与管道

标准输入 标准输出 标准错误 重定向:
< #标准输入重定向,默认为键盘输入,利用<可以将文件代替键盘输入
> #标准输出重定向(会覆盖1.text里面的内容);例子:ls > /data/1.text(将ls命令输出结果重定向道1.text中)
>> # 标准输出重定向(追加,不覆盖)
2> # 标准错误重定向(会覆盖2.text里面的内容);例子:ls > /data/2.text
2>> # 标准错误重定向(追加,不覆盖)
&> # 标准输出与标准错误重定向,两者放在同一个文件里
2&>1 # 将标准错误当作标准输出
 
管道 |:
cmd1 | cmd2| # 将cmd结果重定向道cmd2,可多重管道

以上是关于LINUX 标准错误输出重定向的主要内容,如果未能解决你的问题,请参考以下文章

重定向标准错误到标准输出 是啥意思

linux重定向标准输入输出,标准错误

nohup: 重定向标准错误到标准输出问题解决方法

linux学习第一周;标准输入输出和错误重定向与管道

Linux Bash-重定向

Linux标准输入标准输出错误输出