【问题标题】:Bash BG Process in Subshell: Display Output and Also Pipe to Command (Docker CMD Startup Shell Script)Subshel​​l 中的 Bash BG 进程:显示输出以及管道到命令(Docker CMD 启动 Shell 脚本)
【发布时间】:2020-03-14 18:47:28
【问题描述】:

直接问题

我正在 BG 中的子 shell 中启动命令。如何将输出传递给 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

【问题讨论】:

    标签: sql-server bash shell docker dockerfile


    【解决方案1】:

    如果您想让用户了解情况,可以使用tee 将所有输出复制到stderr:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多