我希望通过管道将在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>
不存在。
这可能吗?
答案 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