실행하고 출력을 파일로 수집하려는 프로그램이 있습니다. 그러나 프로그램을 실행하면 프로그램이 열리고 /dev/stdout
(예: /proc/self/fd/0
) 잘려서 출력을 누적하는 파일에서 모든 내용이 제거됩니다.
이는 작은 쉘 스크립트로 쉽게 재현할 수 있습니다.
sh -c "echo 1; echo 2 > /dev/stdout ; echo 3" >> test.txt
이 명령의 결과에는 test.txt
and 2
( 3
또한이 답변). 1
, 2
및 을 포함하고 싶습니다 3
.
추가 정보:
- 수행된 절차는 본인이 통제할 수 없습니다. 이렇게 하면 문제가 없다는 것을 알지만
>> /dev/stdout
변경할 수는 없습니다. cat
이것을 추가하면 작동할 것입니다... | cat >> test.txt
. 그러나 나는 추가 프로세스 오버헤드가 없는 솔루션을 선호합니다(이는 벤치마킹 목적입니다).chattr +a test.txt
해결책일 수도 있지만 루트가 필요합니다. 저는 그냥 일반 사용자입니다.- 실제로는 컨테이너를 사용하여 프로그램을 실행하고 출력 리디렉션은 컨테이너 외부에서 구성됩니다. 따라서 컨테이너의 특정 구성이 필요한 솔루션이 있는 경우 이것이 가능합니다.
- 물론, 글을 쓰거나
/dev/stderr
직접 사용하기 위해/proc/self/fd/{0,1}
문제를 단순화하는 일반적인 솔루션을 찾고 있습니다.
/proc/self/fd/0
어쨌든 리디렉션이나 파일 설명자 또는 파일을 가리키더라도 잘림을 방지할 수 있는 방법을 구성할 수 있는 방법이 있기를 바랍니다 .