Я пытаюсь запустить демон init.d на Debian 8 после того, как сеть и DNS запущены. Вот сценарий, который я использую:
### 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:» отвечает за настройку и готовность DNS. Похоже, это не так. Как я могу заставить скрипт выполняться только тогда, когда разрешение доменного имени (DNS) и сеть готовы?
РЕДАКТИРОВАТЬ 2017-01-26: Спасибо за ответ. Это LIVE-сервер, и мои навыки работы с 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