상태 정보를 표준 출력에 기록하고 디버그 정보를 표준 오류에 기록하는 장기 실행 프로세스가 있습니다.
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를 닫는 것입니다.