stdout과 stderr를 timestamp와 함께 로그 파일에 기록하고 화면에 표시하고 싶습니다. stderr을 stdout으로 리디렉션하고 awk와 함께 타임 스탬프를 추가하고 로그 파일에 tee를 추가하십시오. 그러나 올바른 오류 코드를 얻는 데 문제가 있습니다. 여기BASH : stdout과 stderr을 파일로 저장하고 화면에 표시 - 올바른 오류 코드 받기
로깅없이 예 :
$ less notexists.txt
notexists.txt: No such file or directory
$ echo $?
1
오류 코드가 로깅 정확한 여기서
예이다 : 세 섹션
$ less notexists.txt 2>&1 | awk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0; fflush(); }' | tee -a log.txt
[2017-10-23 17:19:59] notexists.txt: No such file or directory
$ echo ${PIPESTATUS[*]}
0 0 0
에러 코드는 0이지만 첫 번째 섹션에서 1이어야합니다. 문제는 stderr의 리디렉션이 될 수 있다고 생각합니다.
timestamp가있는 stdout 및 stderr을 로그 파일에 기록하고 화면에서보고 올바른 오류 코드를 얻는 방법이 있습니까?
stderr을 리디렉션하는 대신 복제 할 수 있습니까?
문제는 'less'가 터미널 이외의 것을 표준 출력으로 사용한다는 것입니다. '{less noexists.txt; echo $ ?; } | 고양이. – chepner