얼마 전에 스크립트를 작성하고 그 주위에 로깅을 추가했지만 로깅 리디렉션이 작동하는 방식을 잊었습니다.
그것의 요지는 :
#!/bin/bash
LOGFILE=/some/path/mylogfile
(
# here go my commands which produce some stdout
# and, if something goes wrong, also some stderr
) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 )
스크립트를 실행하면에 아무것도 인쇄되지 않고에 인쇄되는 stdout
내용 만 인쇄됩니다 stderr
. 로그 파일 ${LOGFILE}
은 stdout과 stderr을 모두 캡처합니다.
스크립트를 실행하고 터미널에 출력이 없으면 모든 것이 정상임을 알 수 있습니다. 출력이 있으면 문제가 있음을 알고 로그 파일을 확인하여 문제가 무엇인지 알 수 있습니다.
지금 당황하는 방향 전환의 일부는 다음과 같은 구문입니다. 2> >( some command )
아무도 거기에서 무슨 일이 일어나고 있는지 설명 할 수 있습니까?
echo <(date)
하면 대체 파일의 이름을 알려줍니다/dev/fd/63
. 내가 실행cat <(date)
하면 날짜, 즉 대체 된 파일의 내용을 알려줍니다Fri Nov 18 14:11:09 NZDT 2016
.