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

时间:2018-06-24 10:49:56

标签: linux shell docker

我希望通过管道将在Docker容器内运行的程序的标准输出保留在docker日志中(即stdout)。

另一个堆栈溢出问题(How to pipe stdout while keeping it on screen ? (and not to a output file))建议使用var y,但是当docker以非交互模式运行时,该操作不起作用,因为<html> <body> <form> <select id="mySelect" size="1"> <option id="option1">1</option> </select> </form> <br> <button type="button" onclick="myFunction()">Add</button> <script> var y = parseInt(document.getElementById("option1").value); function myFunction() { var x = document.getElementById("mySelect"); var option = document.createElement("option"); option.text = ++y; x.add(option); } </script> </body> </html>不存在。

这可能吗?

1 个答案:

答案 0 :(得分:2)

您要复制一个名为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