docker - 在主机上运行良好的管道卡在 docker 容器中

标签 docker ubuntu pipe deadlock

我正在尝试执行以下命令:

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/

相关文章:

docker - 多次运行 Docker 镜像时传递不同的参数

ubuntu - 错误 : The Docker Engine version is less than the minimum required by Compose

linux - 如何从 shell 设置管道尺寸?

c - 与管道的双向通信

linux - bash,在带有管道的命令中插入条件

docker - 在这个 WSL 2 发行版中找不到 Ubuntu 错误 "The command ' docker'。”

python-3.x - 如何创建/连接到 Docker Azure 服务总线(使用 Python SDK)?

r - 文本在 R 图中无法正确显示

python - 尝试在 ubuntu 上安装 matplotlib 时出现编码错误

amazon-web-services - 如果应用程序重启,如何将日志保留在AWS中?