2012-03-29 1 views
1

이것은 cron 작업이며, STDERR에 대한 결과는 필요한 오류를 이메일로 통지합니다. 그러나 오류는 치명적이지 않을 수 있으므로 STDOUT을 사용하여 로그에 STDERR 출력이 포함되어 있어야합니다. 방법?bash는 로그에 STDOUT + STDERR이 필요하고 정상적인 목적지에 STDERR이 필요합니다.

+2

이 한 달에 1 ~ 2 X를 요구됩니다. 도움이 될만한 것을 찾지 못했습니까? 행운을 빕니다. – shellter

답변

1

좋아, 나는 표준 쉘 명령 행을 사용하여이를 수행하는 방법을 몇 분 동안 보냈다.

어리석은 명령 줄을 준비하십시오.

((./your-script 3>&1 1>&2 2>&3 3>&- | tee /dev/fd/2) 3>&1 1>&2 2>&3 3>&-) | 
    cat >logfile 

내가 그 가증 한 것에 관해 말할 수있는 유일한 사실은 그것이 작동한다는 것입니다 ... 그리고 더 간단한 것도 찾을 수 없습니다. 아, 그리고 bash 또는 아무것도 필요하지 않습니다. 표준 Bourne 쉘에서 작동합니다.

내가 근처에 | cat이 있어야하는 이유를 알지 못했지만, 문제없이 작동하지 않습니다. 적은 문자

+0

끝 부분에'cat'을 추가하면 라인 버퍼링 모드가 변경되므로 더 빨리 (아마도) 출력을 볼 수 있습니다.하지만 결국에는 모두 같을 것으로 예상됩니다. – ams

0

다음 명령 작품 :

((./your-script 3>&1 1>&2 2>&3- | tee /dev/fd/2) 3>&1 1>&2 2>&3-) | cat > logfile