나는 내가 작성하지 않은 테스트 프로그램을 더 잘 문서화하려고 노력하고 있습니다. 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