[英]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.