![stdout 및 stderr를 리디렉션하고 stderr에서는 타임스탬프만 사용합니다.](https://linux55.com/image/24605/stdout%20%EB%B0%8F%20stderr%EB%A5%BC%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%98%EA%B3%A0%20stderr%EC%97%90%EC%84%9C%EB%8A%94%20%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84%EB%A7%8C%20%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EB%8B%A4..png)
나는 내가 작성하지 않은 테스트 프로그램을 더 잘 문서화하려고 노력하고 있습니다. STDERR 출력의 모든 행에 타임스탬프가 있기를 원하지만 가능하면 STDOUT을 보존하고 싶습니다. 또한 stdout 및 stderr(STDERR 타임스탬프 유무에 관계없이)을 기록하기 위한 파일(all.txt)과 STDERR 출력 전용 파일(타임스탬프가 있는 errors.txt)도 원합니다.
반품,터미널에서 아무 것도 울리더라도 상관하지 않습니다.. 이것은 배치 스타일 프로그램입니다.
나중에 나올 수 있는 rsyslog를 살펴봤지만 이것은 정말 빨리 해독할 수 있는 솔루션입니다. 적어도 출력 리디렉션에 대해 자세히 알아본다면 말이죠. 비슷한 질문을 많이 읽었지만 이 특정 사례와는 관련이 없는 것 같습니다.
stderr 출력에 타임스탬프를 추가하기 위해 파이프와 이 질문의 기술을 사용하고 싶다고 생각합니다.https://serverfault.com/questions/310098/adding-a-timestamp-to-bash-script-log
여기서 가장 깨끗한 해결책은 무엇입니까? 내 RHEL5 시스템은 bash 3.2.25를 실행하고 있습니다.
+----stdout-------------------+
/ \
test.pl --+ +--> all.txt
\ /
+----stderr | add_timestamps -+----> errors.txt
답변1
나는 이것이 당신이 원하는 것을 할 것이라고 생각합니다 :
test.pl 2>&1 >all.txt | add_timestamps | tee -a all.txt > errors.txt
- stderr를 stdout으로 리디렉션(나중에 파이프할 수 있도록)
- (원시) 표준 출력을 다음으로 리디렉션
all.txt
- 파이프 stdout(현재 오류 메시지 포함)을 다음으로 연결합니다.
add_timestamps
tee
오류(타임스탬프 포함)를 추가하는 데 사용됩니다 .all.txt
- 마지막으로 오류는 다음에도 기록됩니다.
errors.txt