我有一个定制的服务包,可以在Debian10上正常工作。我希望在Debian11或Ubuntu 22上运行它,但是ExecStartPre中的挂载命令不起作用。或者更好的是,它们是在没有错误的情况下执行的,但是挂载点是不可用的。当我手动执行挂载命令,然后启动服务时,它看起来很好。但是,当服务器重新启动时,由于缺少挂载点,服务无法启动。下面是文件中的小片段:
[Service]
...
ExecStartPre=-mount -o bind,ro /etc/myservice /chroot/%i/etc/myservice.d
ExecStart=/usr/sbin/myservice-%i -n -f /etc/myservice.d/myservice-%i.conf
....知道为什么要忽略挂载命令吗?
编辑:
它在systemd 245.4-4 ubuntu3.18中运行良好,但是当我升级到249.11-0ubuntu3.4时,我就不能再安装了。命令的退出代码是"status=0/SUCCESS“。调试模式报告的条目比以前版本的systemd多(不确定是否扩展了日志记录)
Sep 29 15:44:48 myhostname systemd[18647]: Bind-mounting / on /run/systemd/unit-root (MS_BIND|MS_REC "")...
Sep 29 15:44:48 myhostname systemd[18647]: Applying namespace mount on /run/systemd/unit-root/run/credentials
Sep 29 15:44:48 myhostname systemd[18647]: Successfully unmounted /run/systemd/unit-root/run/credentials/systemd-sysusers.service
Sep 29 15:44:48 myhostname systemd[18647]: Bind-mounting /run/systemd/inaccessible/dir on /run/systemd/unit-root/run/credentials (MS_BIND|MS_REC "")...
Sep 29 15:44:48 myhostname systemd[18647]: Successfully mounted /run/systemd/inaccessible/dir to /run/systemd/unit-root/run/credentials
Sep 29 15:44:48 myhostname systemd[18647]: Applying namespace mount on /run/systemd/unit-root/run/systemd/incoming
Sep 29 15:44:48 myhostname systemd[18647]: Followed source symlinks /run/systemd/propagate/myservice → /run/systemd/propagate/myservice.
Sep 29 15:44:48 myhostname systemd[18647]: Bind-mounting /run/systemd/propagate/myservice on /run/systemd/unit-root/run/systemd/incoming (MS_BIND "")...
Sep 29 15:44:48 myhostname systemd[18647]: Successfully mounted /run/systemd/propagate/myservice to /run/systemd/unit-root/run/systemd/incoming
Sep 29 15:44:48 myhostname systemd[18647]: Remounted /run/systemd/unit-root/run/credentials.
Sep 29 15:44:48 myhostname systemd[18647]: Remounted /run/systemd/unit-root/run/systemd/incoming.
Sep 29 15:44:48 myhostname systemd[18647]: Remounted /run/systemd/unit-root/run/credentials基本文件夹结构是用jailtool创建的,旧的包是什么,但是我尝试了相同的jailkit,结果是一样的。
服务的启动/重新启动/停止是与root用户一起完成的。
发布于 2022-10-28 13:30:07
最后,我不得不将MountAPIVFS定义为false,以便能够看到挂载点。
发布于 2022-10-02 14:58:49
在此服务的systemctl status输出中,您看到挂载命令的状态或错误代码吗?
您的服务是否切换到不同的用户,以便挂载命令不以所需的(Root)运行?特权?在本例中,您可以在ExecStartPre命令前面加上"+“号,如下所示:
ExecStartPre=+/sbin/mount -o bind,ro /etc/myservice /chroot/%i/etc/myservice.dhttps://serverfault.com/questions/1111799
复制相似问题