在启用或禁用并行启动脚本运行的情况下如何安装 Linux 应用程序?

在启用或禁用并行启动脚本运行的情况下如何安装 Linux 应用程序?

我们开发了一个 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 应用程序的最佳实践是什么?

谢谢,

答案1

让 insserv 为您创建符号链接。使用 insserv 时,您还可以向脚本头添加依赖项,以便 insserv 知道何时在特殊运行级别启动和停止脚本。这对于顺序和并行执行是必要的。尝试与 lsb 兼容。这是一个简短的例子:

# Following lines are in conformance with LSB 1.2 spec
### BEGIN INIT INFO
# Provides:            your shoort app name here
# Required-Start:      what should start before your app, e.g. network
# Required-Stop:       what should stop before your app stops
# Default-Start:       2 3 4 5
# Default-Stop:        0 1 6
# Description:         longer about 
### END INIT INFO

相关内容