从 podman 容器设置 MAINPID

从 podman 容器设置 MAINPID

我想发送带有就绪状态和主 pid 的 systemd 通知。不幸的是,systemd 似乎无法处理来自不同命名空间的 pid 转换。(只是猜测……)

具体来说,我正在启动一项服务:

ExecStart=podman run --rm --cgroups=disabled -v /run/systemd:/run/systemd ... script.sh

启动脚本执行以下操作:

echo "MAINPID=$$" | nc -uUN -w0 /run/systemd/notify

这似乎没有改变任何东西。 MAINPID 设置为 conman(默认)或 podman(--sdnotify=ignore)。再说一次,我实际上是MAINPID=1从正在运行的容器内部发送的。

这里是否有一些解决方法来确保服务/容器内的特定进程成为 MAINPID?

答案1

使用路径 执行开始帖子=以加号开头,指示systemd以 root 身份运行该命令。我了解到,如果进程以 root 身份运行,则 systemd 会接受从意外进程发送的 MAINPID。

如果你想尝试,你可以尝试

ExecStartPost=+/some/path

参考: 我对 systemd 系统服务进行了一个实验用户=执行开始帖子=(看GitHub 评论)。

相关内容