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

问题描述 投票:0回答:2

我将管道命令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但日志没有写该文件

bash redirect pipe stdout stderr
2个回答
1
投票

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

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

0
投票

这就是你拥有的:

cmd1 | cmd2 >out 2>log

  • 将cmd1的stdout传递给cmd2的stdin,
  • 在屏幕上打印cmd1的stderr,
  • 将cmd2的stdout保存到文件输出,
  • 并将cmd2的stderr保存到文件日志中。

你可能想要:

cmd1 2>log1 | cmd2 >out >log2

这个

  • 将cmd1的stdout传递给cmd2的stdin,
  • 将cmd1的stderr保存到文件log1,
  • 将cmd2的stdout保存到文件输出,
  • 并将cmd2的stderr保存到文件log2。
© www.soinside.com 2019 - 2024. All rights reserved.