我正在尝试执行以下命令:
tail -n +1 -f /test/high_scan.log | awk '1,/shutting down/; /shutting down/ { exit }'
在由以下人员创建的 docker 容器内:docker run -it ubuntu:18.04 bash
这个想法是在 awk 检测到 时中断管道。关闭图案它在主机上运行良好,但永远不会在容器内终止。
在这两种情况下,文件都是相同的。
有任何想法吗?
最佳答案
awk
在新鲜ubuntu:18.04
Docker 容器是 mawk
.在您的主机系统上,几乎可以肯定是 gawk
.如果安装 gawk
在容器中并改用它,那么它的工作原理是一样的。
看起来特别的问题是 mawk
block 缓冲其输入,一旦写入过程结束,tail -f
将永远存在,因此它永远不会读取其缓冲区的末尾。因此,作为替代解决方案,您可以通过 -W interactive
如果您想继续使用它,请大笑。
关于docker - 在主机上运行良好的管道卡在 docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64990831/