![명명된 파이프에서 입력을 받은 후 백그라운드 Terraform 프로세스의 표준 출력을 리디렉션할 수 없습니다.](https://linux55.com/image/214603/%EB%AA%85%EB%AA%85%EB%90%9C%20%ED%8C%8C%EC%9D%B4%ED%94%84%EC%97%90%EC%84%9C%20%EC%9E%85%EB%A0%A5%EC%9D%84%20%EB%B0%9B%EC%9D%80%20%ED%9B%84%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%20Terraform%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%ED%91%9C%EC%A4%80%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
지형 파일이 있습니다.
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만 로그 파일로 리디렉션되는 이유는 무엇입니까?