如何编写对互联网可用性的启动依赖项?

如何编写对互联网可用性的启动依赖项?

我的 Raspberry Pi (~ Debian) 上的一些服务依赖于互联网的可用性(尤其是ntpd由于神秘的原因)。具体来说,网络设备或链路的可用性是不够的。

当我看的时候/etc/init.d/ntp我看到

### BEGIN INIT INFO
# Provides:        ntp
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:
# Short-Description: Start NTP daemon
### END INIT INFO

我认为这意味着这ntp取决于$network能否开始。我找到了一个参考,/etc/insserv.conf但它没有说明设置它实际需要什么:

#
# Low level networking (ethernet card)
#
$network        +networking +ifupdown

问题一:元素究竟是如何$network定义的+networking +ifupdown? (这样我就可以修改它并尝试在将网络声明为“up”之前到达实际主机)

问题2:如果不满足网络先决条件,ntp启动会延迟还是会失败?

答案1

$network 是在哪里定义的?

这是一个好问题,并且我在这里概括了它

$network 到底是如何通过 +networking +ifupdown 元素定义的?

AFAICT 它不是由此定义的,它定义了哪些服务必须(可选)还声明该设施具有的任何依赖项(?? - 请参阅我在上面发布和链接的问题)。从man insserv

insserv 扫描配置文件 /etc/insserv.conf 中的系统设施 [...] 此类系统设施后面的所有名称都将声明该设施所需的依赖关系。 [...] 以“+”号开头的名称被标记为可选。

事实上,在 raspbian 上/etc/init.d/networking(通过 启动/etc/rcS.d,无论运行级别如何,它都会在启动时运行)不是包括$network作为先决条件,尽管其他一些服务(例如ntp)也这样做。

Q2:如果不满足网络条件,ntp 启动是否会延迟或失败?

这些先决条件(以及 INIT INFO 块中的其他内容)仅用于设置和配置/etc/rcN.d目录中的脚本链接,例如,当您运行时update-rc.d(这是 的前端insserv)。换句话说,它们在实际执行过程中不会被使用。因此,如果S02ntp处于您的默认运行级别,它将运行无论在启动期间(除了之前的一些致命错误)。

相关内容