Вы должны дождаться успешного выполнения предыдущей команды. Это может быть достигнуто как:
#!/bin/bash
redis-server && \
mongod &&\
cd ~/some/path && npm start &&\
cd ~/some/path && ./ngrok http 3000 -region=eu &&\
echo "My Workspace has been started"
Таким образом, каждая команда зависит от выполнения предыдущей. Однако если какой-либо из них не настроен на выход после выполнения (что весьма вероятно, поскольку первые два являются службами), он никогда не будет завершен должным образом.
Итак, чтобы решить эту проблему, вы можете создать несколько проверок для запуска сервисов, например:
#!/bin/bash
redis-server &
sleep $SOMEMINUTES &&\
ps WHATEVEROPTIONSYOUPREFER | grep redis && \
mongod &
Вы видите образец здесь. Или Вы можете положиться на это для redis
:
#!/bin/bash
redis-server &
sleep $SOMEREASONABLETIME && redis-cli ping && \
mongod &
cd ~/some/path && npm start &
cd ~/some/path && ./ngrok http 3000 -region=eu &
echo "My Workspace has been started"
Для mongodb
Возможно, вам придется положиться на ps
или netcat
, чтобы проверить статус, насколько я знаю. Здесь Вы можете найти несколько примеров .