2012-10-30 1 views
1

가능한 중복 :
pipe stdout and stderr to two different processes in shell script?stderr을 stdin으로 파이프하는 방법은 무엇입니까?

내가 stdout 및 stderr에 기록하는 프로그램을 가지고, 내가 파이프에 logger 명령 및 파이프로 표준 에러의 표준 입력에 표준 출력을 원하는 다른 logger 명령의 stdin, 여기서 설비, 우선 순위 및 태그는 첫 번째 logger 명령과 다릅니다.

이 명령은 Ubuntu에서 upstart 스크립트의 exec 스 D 자에서 실행됩니다. 또한 서브 쉘을 사용해 보았지만 작동하지 않았습니다.

어떻게하면됩니까?

감사합니다. :)

+0

여기에 가능한 해결책이 있습니다 (광산이 아니기 때문에 대답이 아닙니다) http://forums.fedoraforum.org/showthread.php?t=201837 –

+0

@ammoQ - 답변을 링크로 게시 할 때 아무런 문제가 없습니다. 링크 된 기사가 사라지는 경우에 대비하여). 그것은 결국 대답이고, 당신은 그것을 발견했습니다 :-) –

+0

@BrianAgnew : 좋은 솔루션인지 또는 전혀 작동하지 않는지 알지 못하기 때문에 나는 단지 대답으로 봤던 것을 게시하지 않습니다. . –

답변

3

이것을 시도 :

logger 2>&1 | logger 

설명 : logger 2>&1 표준 오차를 리디렉션 표준 출력 (파일 기술자 2) (파일 기술자 1) 다음 | logger 것 관이 서로의 표준 입력 logger 명령의 인스턴스

+0

나는 그것이 옳은지 잘 모르겠다. stderr는 stdout과 별개의 어딘가에 가야한다고 생각합니까? –

+0

@BrianAgnew 그게 가능한지 모르겠다. (최소한 간단한 쉘 명령을 사용하면). 어떻게 그럴 수 있니? –

+0

안녕하세요 @ BrianAgnew, 게시 주셔서 감사합니다. 그러나 로거는 아무 것도 출력하지 않습니다. logger는 syslog에 메시지를 쓰는 유틸리티 명령입니다. 내 프로그램의 stderr와 stdout을 로거에 쓰고 싶지만 다른 기능, 우선 순위 및 태그를 가진 로거에서 쓰고 싶다. 나는이'program 1> logger -p local0.info -t test_info 2> logger -p local0.error -t test_error'와 같은 것을 원한다. 불행하게도 리다이렉션은 단지 파일을위한 것이다. – Remy