名前付きパイプから入力を受信した後、バックグラウンドTerraformプロセスの標準出力をリダイレクトできません。

名前付きパイプから入力を受信した後、バックグラウンドTerraformプロセスの標準出力をリダイレクトできません。

地形ファイルがあります。

terraform {
  required_version = "1.3.5"
}


locals {
  a = "foo"
  b = "bar"
}

Bash端末では、次のことができます。

$ echo "local.a" | terraform console
"foo"
$ echo "local.b" | terraform console
"bar"

今やりたいことは、terraform consoleバックグラウンドで実行されているプロセスを起動し、それにコマンドを提供することです。

これは私が試したものです(この回答に基づいてhttps://serverfault.com/a/815253):

$ mkfifo /tmp/srv-input
$ tail -f /tmp/srv-input | terraform console >>output.txt 2>&1 &

これにより、バックグラウンドプロセスが正しく開始されます。

$ ps -ax | grep terraform
6030 pts/0    Sl     0:01 terraform console

その後、次のように実行します。

$ echo "local.a" > /tmp/srv-input

出力ファイルがoutput.txt空です。

$ cat output.txt
$ 

私が実行した場合:

$ echo "local.c" > /tmp/srv-input # invalid input

出力ファイルにoutput.txt(予想される)エラーが含まれています。

$ cat output.txt
│ Error: Reference to undeclared local value
│   on <console-input> line 1:
│   (source code not available)
│ A local value with the name "c" has not been declared. Did you mean "a"?

[1]+  Exit 1                  tail -f /tmp/srv-input | terraform console >> output.txt 2>&1

stdoutではなくstderrだけがログファイルにリダイレクトされるのはなぜですか?

ベストアンサー1

おすすめ記事