在其他一切之后启动时运行脚本

Wil*_*tes 5 startup debian init.d

好的,所以有一个在 Debian 机器上运行的服务 (nagios) 运行得很好,除了一个非常具体的问题,只有在重新启动机器后才会出现。通过手动重新启动服务可以轻松解决该问题。问题本身是如此具体,如此深奥,以至于我没有时间解决它(一次检查 500+ 会返回一个错误,但只有当它由 nagios 运行时)。

接下来最好的事情是让它在启动时重新启动服务本身,因此没有人每次都必须手动完成。到目前为止,我已尝试通过以下方式完成此操作:

将“/etc/init.d/nagios restart”添加到/etc/rc.local,这确实通过查看日志运行,但不能解决问题(仍然必须手动完成)

将启动 nagios 的时间移到最后(update-rc.d nagios 默认为 99 10)

回到 rc.local 修复,这次添加了“sleep 20”行,这只会延迟启动框 20 秒。

还有什么我可以尝试/看的吗?

Mar*_*cel 3

检查您想要延迟的初始化脚本是否有这样的注释块:

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
Run Code Online (Sandbox Code Playgroud)

正如 Debian 的LSBInitScripts wiki 中所述,该块告诉 init 子系统在 nagios 脚本运行之前应该启动一些其他设施。

然后,您需要做的就是指出为什么您的nagios init脚本需要重新启动,是因为网络尚未启动吗?是因为网络服务器仍在启动吗?或者,nfs 尚未同步?

您需要找出为什么每次都需要重新启动 nagios,但这种方法是针对您的情况的最优雅的解决方案。