cmd1,cmd2与管道连接并保存日志,每个逗号

时间:2018-09-04 04:45:57

标签: bash redirect pipe stdout stderr

我要传递命令1和命令2。 该命令的日志想输出到一个文件。

但是日志显示在终端上...

$cmd1 1> result1.out 2> log.txt

$cmd2 result1.out 1> result2.out 2>> log.txt

两个命令可以用作管道以减少时间。

每次运行与连接到管道所用的时间相差一个小时。

$cmd1 | cmd2 1> result.out 2> log.txt 

这种情况下,我想将所有日志保存到log.txt,但是日志没有写入该文件

2 个答案:

答案 0 :(得分:1)

对管道进行分组并重定向整个组的stderr:

{ cmd1 | cmd2 >result.out; } 2>log.txt

答案 1 :(得分:0)

这是您拥有的:

cmd1 | cmd2 >out 2>log

那个

  • 将cmd1的标准输出传递到cmd2的标准输入,
  • 在屏幕上打印cmd1的标准错误,
  • 保存cmd2的标准输出以归档,
  • 并将cmd2的stderr保存到文件日志中。

您可能想要:

cmd1 2>log1 | cmd2 >out >log2

  • 将cmd1的标准输出传递到cmd2的标准输入,
  • 将cmd1的stderr保存到文件log1,
  • 保存cmd2的标准输出以归档,
  • 并将cmd2的stderr保存到文件log2。