Debian 8/init.d:“$named”准备就绪后启动守护进程

Debian 8/init.d:“$named”准备就绪后启动守护进程

网络和 DNS 启动并运行后,我尝试在 Debian 8 上启动 init.d 守护程序。这是我使用的脚本:

### BEGIN INIT INFO
# Provides:          local_daemon
# Required-Start:    $all $local_fs $remote_fs $network $named $time $syslog
# Required-Stop:     $all $local_fs $remote_fs $network $named $time $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts a Daemon.
# Description:       Starts a custom daemon.
### END INIT INFO

我有几个服务器,这基本上可以正常工作。但是,在某些情况下,调用脚本时 DNS 尚未准备好。因此,守护进程在运行时无法连接到 www.domain.com。最终 DNS 已准备就绪,但这是在脚本运行之后(而不是在脚本运行时)。

问题:如何在调用脚本时强制 DNS 准备就绪?我的假设是“Required-Start:”中的 $named 负责设置和准备 DNS。但事实似乎并非如此。如何强制仅在域名解析 (DNS) 和网络准备就绪时执行脚本?

编辑 2017-01-26:感谢您的反馈。这是一个实时服务器,我的 Linux 技能最多只能算是初级水平。否则,我宁愿不破坏运行良好的系统。无论如何,我在服务器启动前设置了 20 秒的休眠时间,这似乎运行良好。是的,我非常清楚这是“黑客行为”:

start() {
  # wait a while to make sure the network is ready!
  sleep 20

  # run the server
  ...
}

case "$1" in
start)
  # starts the server in a separate thread
  start &
  ;;
stop)
  # stop: we do nothing special
  ;;
*)
  ;;
esac
exit 0

相关内容