【发布时间】:2017-10-06 04:28:31
【问题描述】:
我正在使用 tail -f /dev/null 命令来保持容器正常运行。
该行本身被放置在一个脚本中,前后都有一个回声。
tail -f /dev/null 下的回声预计无法访问,但由于某种原因,我在日志中看到了它。
一旦出现问题,每次重新启动容器都会导致容器启动并完成。只有 rm 和重新构建解决了这个问题。
我不确定它是否已连接,但我注意到在很短的时间间隔内停止和启动计算机有助于我重现该问题。
tail -f /dev/null在什么情况下可以继续下一行?
基础镜像: ubuntu 64x, 14.0.4
计算机操作系统: ubuntu 64x、14.0.4
【问题讨论】:
-
Curios here... 您希望 /dev/null 提供什么样的输出?你希望什么?
-
@Sokre -
tail -f /dev/null是一个常见的习惯用法,用于在“真实”命令不是长期存在的情况下使容器无限期地保持活动状态。 -
只是为
tail -f /dev/null添加一些细节。tail -f /dev/null通常被添加,因为你的 docker 容器中的进程(pid 1)没有在前台运行,如果前台没有运行,docker 会自动关闭。 -
为什么不“up -d”?
-
tail -f 从不可搜索的描述符(例如管道)中读取时确实会在 EOF 上停止。据我所知, /dev/null 安装在 docker 容器内。也许发生了一些事情,并且 /dev/null 被重新安装以触发 EOF。也可以尝试 -F (--follow) 而不是 -f 以便在重新创建时跟随文件
标签: docker ubuntu-14.04