我的问题完全一样这除了我想更改 FreeBSD 中的服务之外的问题。
我进行了一些研究,发现 rcorder 命令可以通过以下参数提供完整的服务顺序。
rcorder /etc/rc.d/* /usr/local/etc/rc.d/*
此外,我可以添加任何 rc.d 脚本的 REQUIRE 选项,以便在它之前启动我的服务。我不喜欢这种方式,因为我不想更改其他程序的 rc.d 脚本。有没有更合适的方法来做到这一点?
谢谢...
答案1
rc 启动顺序由 决定rcorder
,正如您已经确定的那样。
确定启动顺序的过程是自动的,并且手册页rcorder
相对来说不言自明,但你可能需要花一些时间去复习实用的 rc.d 脚本,以及rc
手册页在进行任何更改之前。
在您的特定情况下,您可以告诉 rcorder 您的脚本优先启动BEFORE:
其他脚本(使用BEFORE
关键字),但这只能在有充分理由的情况下并在一定限制内进行。
摘自《实用 rc.d 脚本》文章:
注意:不应滥用 BEFORE: 行来解决其他脚本中不完整的依赖项列表。使用 BEFORE: 的适当情况是,其他脚本不关心我们的脚本,但如果我们的脚本在另一个脚本之前运行,则可以更好地完成其任务。一个典型的现实示例是网络接口与防火墙:虽然接口在执行其工作时不依赖于防火墙,但系统安全性将受益于防火墙在出现任何网络流量之前就绪。
另外
请记住,在 REQUIRE: 行中放置服务名称并不能保证服务在我们的脚本启动时确实正在运行。所需的服务可能无法启动,或者只是在 rc.conf(5) 中被禁用。显然,rcorder(8) 无法跟踪此类详细信息,rc(8) 也不会这样做。因此,我们的脚本启动的应用程序应该能够应对任何不可用的所需服务。
答案2
当然,修补现有脚本不是一个好主意,升级后它们会被覆盖。您可以创建另一个不执行任何操作的脚本,但包含 REQUIRE 和 BEFORE 关键字,这样它将交换其他两个脚本的顺序。