bash에서 stdout 및 stderr을 여러 파일로 리디렉션하는 방법은 무엇입니까?

bash에서 stdout 및 stderr을 여러 파일로 리디렉션하는 방법은 무엇입니까?

commandstdout과 stderr을 다음으로 리디렉션하고 싶습니다 .logfile.txt 그리고도착하다 otherfile.txt.

현재 나는 다음과 같이 두 가지를 모두 캡처하고 있습니다.

command  >> logfile.txt 2>> logfile.txt

이것은 작동하지만 작동하지 않는 것은 다음과 같습니다.

node myscript.js 2>&1 >> logfile.txt

이는 표준 출력에만 기록됩니다. 두 번째 파일을 추가하려는 경우 내가 찾은 방법 2>&1에는 tee.

저는 Bash 버전 4.4.20(1) 릴리스와 함께 Linux Mint 19를 사용하고 있습니다.

답변1

설명된 대로리디렉션 시퀀스 이해에서는 리디렉션 순서가 중요합니다.

node myscript.js 2>&1 >> logfile.txt

표준 오류를 표준 출력이 가리키는 곳으로 리디렉션한 다음 표준 출력을 로 리디렉션합니다 logfile.txt.아니요표준 오류가 발생했습니다.

순서를 바꿔야 합니다.

node myscript.js >> logfile.txt 2>&1

두 개의 출력이 로그인됩니다 logfile.txt.

그러나 다음으로 파이프하려는 경우에는 관련이 없습니다 tee.

node myscript.js 2>&1 | tee -a logfile.txt otherfile.txt

관련 정보