依赖于网络的启动时自动启动服务

依赖于网络的启动时自动启动服务

我有一个在启动时运行的特定服务(在本例中为 OpenFire)。启动时,它会尝试连接到给定主机名的数据库。启动时,它无法连接到该数据库,因为它无法在 DNS 中找到主机。

我最好的猜测是,此服务在网络初始化和从 DHCP 获取 DNS 服务器之前在启动时执行。有没有办法指定在执行脚本之前必须满足的启动服务依赖关系/etc/init.d/

答案1

忘掉 upstart 吧。有更简单的方法可以做到这一点。在此处放置一个启动 Openfire 的脚本:

 /etc/network/if-up.d/

如果 openfire 必须以您的用户身份运行,那么类似如下操作:

#!/bin/sh
su -c "openfire" myUserName

确保将其标记为可执行文件:

sudo chmod +x /etc/network/if-up.d/openfire

同样地,当你失去网络连接时,你可以关闭 openfire,通过在 /etc/network/if-down.d/ 中放入一个脚本来终止它:

#!/bin/sh
killall openfire

答案2

您可以查找该服务;例如,/etc/rc0.d它将有。S##[name]S35networking

因此,如果您让它说,S36openfire那么它应该在联网后立即加载。或者让它说数字99(而不是36),它将最后加载,让网络有时间完成它的工作。

希望这对你有用。

答案3

如果你没有使用 NetworkManager 配置你的网络,你可以尝试将 upstart 配置为依赖于网络:

开始建立网络

或者

在启动网络接口时启动

我不知道它如何与 NetworkingManager 交互,也许 NM 触发了一些可通过 upstart 检测到的事件。

相关内容