Запустите redis на переднем плане и сервер узлов с одной командой параллельно, но последовательно - PullRequest
0 голосов
/ 30 мая 2018

Существуют такие инструменты, как npm-run-all , которые позволяют постоянным процессам работать параллельно в одном процессе.Я заинтересован в том, чтобы сделать это с redis и node сервером.

Однако я ищу способ запустить эти два параллельно, но запускать процесс node только тогда, когда redisпроцесс действительно проверен.

Есть ли какой-нибудь инструмент Unix / Bash, который может достичь того, чего я хочу?

Я вижу, как это работает двумя способами:

Опция1

Инструмент, который проверяет определенный стандартный вывод процесса , например, redis записывает Ready to accept connections в стандартный вывод, инструмент будет следить заэто как регулярное выражение.Когда он получит его, событие внутренне сработает, и сервер node будет запущен.

Опция 2

Инструмент, который проверяет если / когда http-соединение доступно для конкретного сервера и когда оно получает правильный ответ проверки работоспособности, запускается внутреннее событие и запускается последующий сервер node.Также должен быть задействован тайм-аут.С этим связано то, что он специфичен только для процессов, которые раскручивают серверы и конечные точки на согласованном локальном порту.

1 Ответ

0 голосов
/ 30 мая 2018

Как насчет скрипта, который отвечает на команду PING?

!/bin/bash

X="`redis-cli ping`"
echo ${X}

while  [ "${X}" != "PONG" ]; do
        echo "redis not yet ready"
        echo "${X}"
        sleep 50
        X="`redis-cli ping`"
done

echo 'Lets start node'
...