在 Red Hat 上网络准备就绪后启动服务

在 Red Hat 上网络准备就绪后启动服务

在 Ubuntu 上,要配置在网络启动后启动的服务,您可以将脚本放在 /etc/network/if-up.d/ 中

#!/bin/sh
/etc/init.d/<your service> restart

或者类似建议此超级用户问答

但我在 Red Hat 上没有看到等效的东西。我发现的唯一东西是在 S/K 文件中使用数字。我的意思是,这是 Red Hat 的做法吗?

答案1

是的,这是正确的方法。您应该使用 chkconfig 来管理初始化脚本。

S?? 和 K?? 数字决定优先级,因此您应该确保您的服务的数字高于“网络”(或 NetworkManager)服务的编号。

答案2

启动脚本开始时的 chkconfig 定义决定了它获得的 S/K 号码。

每个“运行级别”实际上只是一个目录(/etc/rc*.d/)充满了指向启动脚本的符号链接(/etc/init.d/) 并且这些符号链接以编号的 S 和 K 条目命名。

S 表示启动,K 表示终止。当 init 进入运行级别时,它会从 S01 开始,一直到 S99,运行每个 init 脚本以启动该脚本控制的服务。当 init 离开运行级别时,它会从 K01 开始,一直到 K99,运行每个脚本以停止该脚本控制的服务。

检查配置给出了 chkconfig 样式的服务定义和 Linux 标准库 (LSB) 样式的服务定义的示例。

如果启动脚本中定义了两种类型,则 LSB 定义应该优先于 chkconfig 定义。

如果你有一个依赖于网络连接的服务,你可以确保你的服务在 /etc/rc*.d/S10network 之后启动,方法是给它一个 10 之后的起始编号,或者你可以看到 /etc/init.d/network 有 LSB 定义提供:$network,因此您可以使用 LSB 定义必需-开始:$network在你的启动脚本中。

相关内容