Если сервер прослушивает сокет домена, вы можете создать цикл, который опрашивает сокет. В bash может быть более простой способ сделать это, но это может выглядеть примерно так:
for i in 1 2 3 4 5; do
if [ -e '/var/run/myserver.sock' ]; then
break
fi
done
Другое решение состоит в том, чтобы ваш сервер не демонизировался, пока он не открыл сокет прослушивания. Таким образом, сценарий инициализации приостанавливается до тех пор, пока процесс не демонизируется, что гарантирует доступность сокета.
Конечно, это зависит от того, как ваше приложение выполняет демонизацию, а не каким-либо другим способом. ("/ usr / bin / myserver &" или тому подобное.)
Обновлен:
Также обратите внимание, что все, что вы сейчас делаете, это инициализация в стиле System-V. Ubuntu на самом деле использует Upstart, которая является системой, основанной на событиях, а не последовательностью сценариев. Вы можете выбрать использование заданий upstart вместо сценариев инициализации System-V и запуск пользовательского события Upstart с вашего сервера, что приведет к запуску вашего второго сервера.
В руководстве Getting Started приведен пример этого в самом низу. Я не знаю, есть ли способ API, но это может быть просто вопросом «системы (« / bin / initctl emit myevent »);» в нужный момент времени на вашем первом сервере. Кто-то другой, имеющий больше опыта в Upstart, может уточнить лучше / дальше.