这个初始化脚本如何在没有依赖项的情况下启动?

这个初始化脚本如何在没有依赖项的情况下启动?

我正在研究一些 lsb 初始化脚本。这是其中之一的初始化信息:

### BEGIN INIT INFO
# Provides:     myscript
# Required-Start:   networking myotherscript
# Required-Stop:    networking myotherscript
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    Starts my daemon
### END INIT INFO

以及来自 myotherscript 的初始化信息

### BEGIN INIT INFO
# Provides:     myotherscript
# Required-Start:   networking
# Required-Stop:    networking
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    Starts my other daemon
### END INIT INFO

如果我理解正确,service myscript start除非 myotherscript 正在运行,否则运行应该不起作用。然而,执行service myscript start确实有效。

为什么我至少没有收到有关未满足依赖关系的错误?

答案1

service命令除了使用提供的参数运行 init 脚本之外没有做更多的事情。特别是,它不处理依赖关系。

在 Fedora/RHEL/CentOS 和 Debian/Ubuntu/Mint(可能还有其他)上,注释中记录的依赖项仅由服务脚本管理实用程序考虑chkconfig。如果您直接调用脚本,则不会考虑它们,其想法是,如果您这样做,您将直接干预并希望精细控制您正在操作的服务(例如,您可能正在本地运行- 依赖项的已安装版本,或者您可能在虚拟化环境中的不同来宾中运行它)。这符合最低有效位它仅指定应用程序和发行版之间的接口,而不指定发行版和管理员之间的接口。

缺乏对依赖项的内置支持是 SysVinit 的缺陷之一,它正在慢慢被 Systemd 淘汰。

相关内容