我们开发了一个 Linux 应用程序以在不同的 RedHat/SUSE 发行版上工作。该应用程序(即守护程序)预计会在启动时自动运行,因此我们将启动脚本放在 /etc/init.d/ 目录中,并在运行级别目录中创建符号链接(../rc.d/rc5.d/,例如实例)。如果用户删除我们的应用程序,我们的卸载脚本会删除我们所有的东西,包括符号链接。如果操作系统不提供并行脚本运行,它工作正常。如果启用并行运行,我们需要另一种解决方案。例如,在 SLES 10 中,我们在 /etc/sysconfig/boot 中有:
# Run all scripts or rather start/stop all services
# which are independent from each other in parallel.
RUN_PARALLEL="yes"
据我们了解,我们必须使用 insserv 实用程序注册我们的脚本。在这种情况下,系统会分析脚本头并自行创建/删除符号链接。如果是真的,如何组织我们的应用程序的安装/卸载以涵盖并行和顺序启动脚本运行?看起来我们应该在禁用或启用并行运行时采取不同的行为。在第一种情况下,我们应该自己关心符号链接。在第二种情况下,我们应该将其委托给 insserv。这是正确的方法吗?如果是,我们是否应该通过检查/etc/sysconfig/boot 来分析是否启用了并行运行?它看起来不可靠,因为在不同的 Linux 发行版中它可能有不同的位置和不同的参数。
安装/卸载涵盖并行和顺序系统启动的 Linux 应用程序的最佳实践是什么?
谢谢,
让 insserv 为您创建符号链接。使用 insserv 时,您还可以将依赖项添加到脚本头,以便 insserv 知道何时在特殊运行级别中启动和停止脚本。这对于顺序和并行执行是必需的。尝试与 lsb 兼容。这是一个简短的例子: