【问题标题】:Podman build cannot be stopped with CTRL+C in tmuxPodman 构建无法在 tmux 中使用 CTRL+C 停止
【发布时间】:2022-01-16 11:34:38
【问题描述】:

我注意到当我在 tmux 中运行它时,CTRL+C 不能很好地与podman build 配合使用。当我按 CTRL+C 时,我看到一个 ^C 出现在终端中,但 podman 并没有停止构建图像。我认为它稍后会停止,但它不会立即停止。

这是为什么呢?

//编辑 我注意到使用docker build 构建让我可以毫无问题地停止使用 CSTL+C。

【问题讨论】:

    标签: linux terminal tmux podman


    【解决方案1】:

    在您的 pod 内运行的 pid 为 1 的进程会拦截诸如 SIGTERMSIGINT 之类的信号(通过按 CTRL+C)。 然后它将SIGTERM 发送到其管理下的所有进程(在 pod 中运行的任何东西),因此这些进程有一些时间干净/优雅地终止。

    如果经过一定时间(我相信是 10 秒)后仍有进程,pid 1 进程将向所有剩余进程发送SIGKILL,这会立即杀死它们;之后 pid 1 进程本身可以退出并让整个 pid 命名空间过期。


    基本上,简短的版本是 podman init 进程试图彻底关闭电源,而不是仅仅拔掉电源线。

    如果它困扰你,我想 10 秒延迟可以在某处配置(我从未看过)。另一种选择可能是发送更强的信号。

    【讨论】:

    • 嗯,当使用 docker 而不是 podman 时,相同的构建会在 CTRL+C 之后立即停止。
    • 嗯,我想他们可能没有使用相同的默认设置来处理信号;通常 podman 确实会努力与 docker 保持一致,但仍然存在很多差异。另外,我不确定,但我认为podmanbuild 子模块实际上可能只是buildah(?) 的包装,在这种情况下,它可能使用与其他两个应用程序不同的默认值;我会尝试在 containers.conf 中查看 --stop-timeout--stop-signal--sig-proxystop_timeoutinit
    猜你喜欢
    • 2021-10-01
    • 2011-08-18
    • 2020-06-29
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多