명명된 파이프에서 입력을 받은 후 백그라운드 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만 로그 파일로 리디렉션되는 이유는 무엇입니까?

관련 정보