单独分区上的 systemd 单元在重启时无法加载

单独分区上的 systemd 单元在重启时无法加载

我在单独的分区上有一个 .service,它与“systemctl enable”链接,但不会在启动时自动启动。运行“systemctl status”时显示“加载失败”,如果我运行 ,它就会正常工作systemctl daemon-reload

我猜测发生这种情况是因为它位于单独的分区上,并且我可以通过明确执行“cp -t /etc/systemd/system”来解决这个问题。

这看起来像是应该“正常工作”的东西,我遗漏了什么?

答案1

是的,这是预料之中的,并且记录在systemctl(1) 手册页,在enable命令下

在启动 systemd 时,链接单元文件所在的文件系统必须可访问(例如,不允许访问其下的任何内容/home/var除非这些目录位于根文件系统上)。

存在此限制的原因是 systemd 在启动时会扫描所有单元并组装事务。挂载其他文件系统是通过单元完成的,因此在事务进行之前,其他文件系统中的单元将不可用。挂载这些文件系统后,systemd 不会重新扫描单元并重新计算事务。

正如您已经发现的那样,将单元复制到根文件系统是一种合适的解决方法。

答案2

可以采取解决方法。创建将调用以下函数的单元:

systemctl daemon-reload; systemctl start <your service>

使该单位在安装后启动。

相关内容