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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmd1,cmd2与管道连接并保存每个命令的日志相关的知识,希望对你有一定的参考价值。

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

答案

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

{ cmd1 | cmd2 >result.out; } 2>log.txt
另一答案

这就是你拥有的:

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。

以上是关于cmd1,cmd2与管道连接并保存每个命令的日志的主要内容,如果未能解决你的问题,请参考以下文章

Tiny-shell: 实现流水线处理

Shell之命令执行的判断依据

管道化heredoc的多行语法;这是便携式的吗?

C叉和管道多个过程

这个错误是啥意思? (SC2129:考虑使用 cmd1; cmd2; >> 文件而不是单独的重定向。)

Linux 中的管道是什么?管道重定向是如何工作的?