繁体   English   中英

如何将输出通过管道输出到stdout并进入docker中的另一个进程

[英]How to pipe output to stdout and into another process in docker

我想管道在docker容器内运行的程序的标准输出,同时将输出保留在docker日志(即stdout)中。

另一个stackoverflow问题( 如何在将stdout保留在屏幕上的同时管道它?(而不是输出到输出文件) )建议使用foo | tee /dev/tty | bar foo | tee /dev/tty | bar foo | tee /dev/tty | bar ,但这在docker以非交互模式运行时不起作用,因为/dev/tty不存在。

这可能吗?

您想要复制一个名为foo程序的stdout,以将其输出到脚本stdout上,并将其通过管道传递给另一个名为bar程序。 这正是tee的用途。

foo | tee >(bar)

如果您没有支持进程替换的外壳,则可以通过创建一个fifo并在后台运行cat $fifo并运行too "$fifo"来将流复制到stdout和fifo中,从而在同一行中执行相同的操作:

fifo=$(mktemp -u); mkfifo $fifo;
cat "$fifo" &
foo | tee "$fifo" | bar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM