cmd1、cmd2 连接管道并保存每个命令的日志

cmd1, cmd2 connect with pipe and save log each commad

我要通过管道传输命令 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但是日志没有写那个文件

这是你拥有的:

cmd1 | cmd2 >out 2>log

那个

  • 将 cmd1 的标准输出通过管道传输到 cmd2 的标准输入,
  • 在屏幕上打印 cmd1 的标准错误,
  • 将cmd2的stdout保存到文件中,
  • 并将cmd2的stderr保存到文件log中。

您可能需要:

cmd1 2>log1 | cmd2 >out >log2

这个

  • 将 cmd1 的标准输出通过管道传输到 cmd2 的标准输入,
  • 将 cmd1 的 stderr 保存到文件 log1,
  • 将cmd2的stdout保存到文件中,
  • 并将 cmd2 的 stderr 保存到文件 log2.

对管道进行分组并重定向整个组的标准错误:

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