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



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

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

这可能吗?

你想复制一个名为foo的程序的 stdout,以将其输出到脚本 stdout 上,并将其管道传输到另一个名为bar的程序。这正是 T 恤的用途。

foo | tee >(bar)

如果您没有支持进程替换的 shell,您可以在更多行中执行相同的操作,方法是创建一个 fifo 并在后台运行cat $fifo并运行too "$fifo"将流复制到 stdout 和 fifo:

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

最新更新