我有一个基于 systemd 的系统,其中包含一个带有 LSB 标头的 System V 样式 init.d 脚本。只有在 fstab 中的所有文件系统都挂载后,才能启动 init.d 脚本。如何在 LSB 标头中指定这种类型的依赖关系?
答案1
当您说检查文件系统挂载时,很明显,如果找到并挂载了它,您就会运行它,但不清楚的是,如果找不到它,您希望它做什么?
我之所以问这个问题,是因为一个可能的答案是肯定的,在 LSB 中,运行级别决定了这一点。在 Linux/Unix 启动时,文件系统在运行级别 1 可用。因此,在 LSB 标头中设置“Default-Start: 2 3 4 5”。然后,将文件系统挂载条目放入 /etc/fstab 中,并可选择将其设置为“bootwait”,以挂起系统并防止转换到运行级别 2,直到挂载完成,无论需要多长时间。当(远程)文件系统非常关键时,这实际上是某些系统的配置方式。
否则,答案是否定的,您无法仅在 LSB 标头条目本身内检查已安装分区的存在。而且,由于您允许此特定系统在没有此特定文件系统的情况下启动,因此文件系统显然不够“重要”,不足以挂起系统等待安装可用性。
如果你想不是当文件系统未挂载时,由于您试图满足另一个 init 脚本中的“Required-Start:”依赖关系,它是否还能运行?希望不是,因为您会看到,您正沿着 init 脚本依赖关系的非常滑的斜坡滑行。
希望您不希望它运行,因为如果它运行了,它会把事情搞得一团糟,比如填满根文件系统(而不是成为 init 依赖项)?然后,您可以让它运行,但只需编写 init 脚本以根据需要进行检查并正常退出即可。检查文件系统挂载并在未找到时退出的逻辑可能只有一行代码。它可以插入到 LSB 标头之后。