stdout을 유지하면서 stderr을 파이프하는 것이 가능합니까? [복사]

stdout을 유지하면서 stderr을 파이프하는 것이 가능합니까? [복사]

상태 정보를 표준 출력에 기록하고 디버그 정보를 표준 오류에 기록하는 장기 실행 프로세스가 있습니다.

loggerstderr에 작성된 모든 내용이 실제로 syslog로 이동하면서 프로세스의 stdout을 읽을 수 있도록 stderr 출력을 파이프로 연결하고 싶습니다 .

이것이 가능합니까?

답변1

{ cmd 2>&1 >&3 3>&- | logger 3>&-; } 3>&1

아이디어는밖의stdout은 파일 설명자(fd) 3에 복사되어 cmdstdout으로 복원되는 반면, cmd의 파일 설명자 2(stderr) 자체는 로거의 파이프로 이동합니다.

이는 3>&-cmd 및 logger 명령이 필요/사용하지 않기 때문에 해당 목적을 수행한 후 fd를 닫는 것입니다.

관련 정보