如何正确等待分区挂载到 systemd 服务文件中

如何正确等待分区挂载到 systemd 服务文件中

我在启动运行嵌入式 Linux 的设备时遇到问题。我的 systemd 服务在安装某些分区之前运行,这是不可接受的。

我列出了我的安装systemctl list-units --type=mount并查看 .mount 文件。

在我的 systemd 服务文件中,我现在进行了修改以等待安装它们。例如,我的坐骑是opt-abc.mount和,我同时使用和等待它们被安装。opt-def.mountAfterRequires

然而,对于实现这一目标的最佳方法,存在很多不同的意见。RequiresMountsFor=,由于非自动安装,有些人建议不要使用此选项。

任何有关这方面的帮助/经验将不胜感激。

我的服务文件的 Unit 部分现在如下所示:

[Unit]
Description=My service 

After=opt-abc.mount
After=opt-def.mount
Requires=opt-abc.mount
Requires=opt-def.mount

答案1

首先,After= 和 Requires= 都可以获得空格分隔的单元列表。因此,您不需要多项作业(更多,我认为这可能会产生意想不到的结果)。

接下来,After=和Requires=的区别。看看这个https://www.freedesktop.org/software/systemd/man/systemd.unit.html手动的。简而言之: Requires= 用于构建依赖项。 After= 为执行顺序。

我相信,你只需要 After= 。请记住,挂载目标可能是由 fstab 或其他东西生成的。看来,在 Requires= 中使用生成的单元是不好的做法。

相关内容