0

我不明白为什么在使用 sudo 启动 dockerd(例如 1628)时 sudo 会获得一个单独的 PID(例如 1620)?我应该向哪个 PID 发送 SIGTERM 来停止 dockerd?

ps aux | grep dockerd

在此处输入图像描述

pstree -ps

在此处输入图像描述

4

1 回答 1

1

我不明白为什么sudo在使用 sudo 启动 dockerd(例如 1628)时会得到一个单独的 PID(例如 1620)?

这就是行之有效的方式sudo。它将命令作为子进程运行,因为它需要在子进程退出后执行操作。

您也许可以调整sudo配置,以免sudo分叉子进程。在我的系统上,man sudo说:

“如果没有加载 I/O 日志插件并且策略插件没有定义close()函数,设置命令超时或要求命令在新的 pty 中运行,sudo则可以直接执行命令而不是将其作为子进程运行。 "

但请注意:

  • 它说的是可能而不是意志,并且
  • 您必须牺牲一些功能来实现这种“无分叉”行为。

我应该向哪个 PID 发送 SIGTERM 来停止 dockerd?

您可以向sudo进程发送信号,它们将被中继到 dockerd进程。就是这么man sudo说的。查看手册页中有关信号处理的部分。

于 2022-01-31T00:17:09.243 回答