【问题标题】:How to pipe stderr into stdin? [duplicate]如何将标准错误输入标准输入? [复制]
【发布时间】:2012-10-19 18:45:29
【问题描述】:

可能重复:
pipe stdout and stderr to two different processes in shell script?

我有一个写入stdout和stderr的程序,我想将stderr通过管道传输到logger命令的stdin,并将stderr通过管道传输到另一个logger命令的stdin,其中设施、优先级和标签是不同于第一个logger 命令。

此命令在 Ubuntu 上的 upstart 脚本的 exec 节中运行。 我也尝试过使用 subshel​​l,但它不起作用。

知道我该怎么做吗?

谢谢! :)

【问题讨论】:

  • 这是一个可能的解决方案(不是我的,因此不是答案)forums.fedoraforum.org/showthread.php?t=201837
  • @ammoQ - 我认为发布链接作为答案没有问题(如果链接文章消失,请提供详细信息)。毕竟这是一个答案,你找到了:-)
  • @BrianAgnew:因为我不知道这是否是一个好的解决方案,甚至根本不工作,所以我宁愿不发布我刚刚搜索过的内容作为答案。

标签: linux unix ubuntu upstart


【解决方案1】:

试试这个:

logger 2>&1 | logger

解释:logger 2>&1 会将标准错误(文件描述符 2)重定向到标准输出(文件描述符 1),然后 | logger 会将其通过管道传送到 logger 命令的另一个实例的标准输入。

【讨论】:

  • 我不确定这是否正确。我认为 stderr 应该去不同于 stdout 的地方?
  • @BrianAgnew 我不知道这是否可能(至少使用简单的 shell 命令)。你会怎么做?
  • 嗨@BrianAgnew,感谢发帖。但是记录器不输出任何东西。 logger 是一个实用命令,用于将消息写入 syslog。我想将程序的 stderr 和 stdout 写入记录器,但在具有不同设施、优先级和标签的记录器上。我想要这样的东西program 1> logger -p local0.info -t test_info 2> logger -p local0.error -t test_error,不幸的是重定向只适用于文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 2010-09-21
  • 1970-01-01
  • 2019-09-03
  • 2018-08-29
  • 2014-07-22
相关资源
最近更新 更多