Bash BG-процесс в подоболочке: вывод на экран, а также передача по команде (Docker Сценарий запуска CMD) - PullRequest
0 голосов
/ 14 марта 2020

Прямой вопрос

Я запускаю команду в подоболочке, в BG. Как передать выходные данные как процессу FG, так и отобразить его на экране?

( /opt/mssql/bin/sqlservr & ) | grep -q "Service Broker manager has started"

Эта команда работает, но я не вижу вывод sqlserver на экране.

Очень важно, чтобы скрипт ожидал, пока sqlserver напечатает "Service Broker manager has started", прежде чем продолжить.

Вариант использования и исходный код

Это текущая настройка. Файлы сокращены.

--- Dockerfile

FROM mcr.microsoft.com/mssql/server:2019-latest
CMD ["/bin/bash", "dockerrun.sh"]
--- dockerrun.sh

# start DB and wait for it to be up.
( /opt/mssql/bin/sqlservr & ) | grep -q "Service Broker manager has started"

# restore the DB from backup file
~/sqlpackage/sqlpackage #args

# keep this script running, otherwise Docker will stop the container.
while sleep 1000; do :; done

1 Ответ

1 голос
/ 14 марта 2020

Если вы хотите держать пользователя в курсе, вы можете использовать tee, чтобы скопировать весь вывод в stderr:

( /opt/mssql/bin/sqlservr | tee /dev/stderr & ) |
    grep -q "Service Broker manager has started"
...