取决于网络的启动时自动启动服务


6

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

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



我认为不是。问题是有关基于计时器执行的cron作业,并且仅在网络启动时才应继续。这是关于网络启动后立即执行的命令。
拉尔夫(Ralf)2010年

即使它是密切相关的,也不要认为它是重复的。
LassePoulsen

Answers:


1

您可以在/etc/rc0.d中查找该服务,它将具有S ## [name],即-S35networking

因此,如果您说的是S36openfire,则应在联网后立即加载。或者将数字99设置为最后一次加载,这样就可以让网络有时间进行此操作。

希望能帮到您。


Ubuntu使用Upstart。请参阅上面评论中Marco链接的问题。
丹尼斯·威廉姆森

尽管Upstart可以运行,但我已经为我的服务建立了一个rc0脚本。它是K20,而网络是S35。我将其更改为K36,应该可以解决问题。感谢您指出正确的方向。
roktechie

roktechie,K用于停止,而rc0用于关闭。您想要的是在/etc/rc2.d中具有大于35的数字的符号链接。如果您拥有动态IP,则仍在解决竞争问题,因为网络启动会在dhcp启动后立即返回,而不是IP分配后。
SpamapS 2010年

3

忘记新贵了。有很多简单的方法可以做到这一点。在此处放置启动Openfire的脚本:

 /etc/network/if-up.d/

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

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

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

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

同样,当您断开网络连接时,可以通过在/etc/network/if-down.d/中放置一个杀死它的脚本来关闭openfire:

#!/bin/sh
killall openfire

拉尔夫(Ralf),这不提供服务的持续管理,而新贵的工作则可以。但是,如果不想替换init.d脚本,则只需将'su -c“ openfire” ..替换为“ service openfire start”,将killall替换为“ service
openfire

-1

如果不使用NetworkManager配置网络,则可以尝试配置新贵的conf以依赖于网络:

开始建立网络

要么

从启动网络接口开始

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


2
这将导致联网之前启动openfire 。我认为您的意思不是开始进行联网。这仍然是一个问题,因为在启动dhcp客户端后就立即启动了网络连接。您想要的是“在net-device-up IFACE!= lo上启动”,仅在启动非环回设备时才会触发。
SpamapS 2010年

谢谢@SpamapS。您是否知道在为接口分配IP地址或仅启动接口时会触发net-device-up?
ithkuil 2010年

1
对于Google员工,我相信您正在寻找的是start on started networking
Andrew Dunkman 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.