![stdout을 유지하면서 stderr을 파이프하는 것이 가능합니까? [복사]](https://linux55.com/image/95799/stdout%EC%9D%84%20%EC%9C%A0%EC%A7%80%ED%95%98%EB%A9%B4%EC%84%9C%20stderr%EC%9D%84%20%ED%8C%8C%EC%9D%B4%ED%94%84%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%B4%20%EA%B0%80%EB%8A%A5%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
상태 정보를 표준 출력에 기록하고 디버그 정보를 표준 오류에 기록하는 장기 실행 프로세스가 있습니다.
logger
stderr에 작성된 모든 내용이 실제로 syslog로 이동하면서 프로세스의 stdout을 읽을 수 있도록 stderr 출력을 파이프로 연결하고 싶습니다 .
이것이 가능합니까?
답변1
{ cmd 2>&1 >&3 3>&- | logger 3>&-; } 3>&1
아이디어는밖의stdout은 파일 설명자(fd) 3에 복사되어 cmd
stdout으로 복원되는 반면, cmd의 파일 설명자 2(stderr) 자체는 로거의 파이프로 이동합니다.
이는 3>&-
cmd 및 logger 명령이 필요/사용하지 않기 때문에 해당 목적을 수행한 후 fd를 닫는 것입니다.