먼저 참고해주세요stdout 및 stderr을 파일로 리디렉션하고 stderr을 콘솔에 표시하는 방법
이 솔루션은 나에게 놀라운 일이었습니다. 명령이 bash -c에 전달되면 스크립트와 명령을 호출합니다. 나는 더 쉽게 사용할 수 있도록(그리고 리디렉션에서 오타나 전치를 방지하기 위해) 전역 매크로/함수를 작성하기도 했습니다. 나는 그것을 여러 번 사용하는 즐거움을 누렸습니다.
그다음엔 마법을 걸었어
nice make -k -j 1 configure-host
autotools에서 준비한 빌드/설치를 시작합니다. Make 출력이 수집되지 않았습니다. 실제로 3개의 make 작업(호스트 구성, 모두, 설치) 각각은 내 로그 파일에 2자만 입력합니다.
각 출력 파일은 ASCII 0과 캐리지 리턴(0x300a)의 2개 문자로 구성됩니다. make에 의해 생성된 행과 행이 있어야 합니다.
나는 머리를 두드려 보았지만 무슨 일이 일어나고 있는지 이해할 수 없습니다. 세 가지 관련 사항:
- 저는 MSYS2/MinGW-W64(XP 32비트)를 실행하고 있습니다.
- 만들다최소 6개의 FD를 사용하여 다수의 리디렉션을 수행하는 autotools 스크립트를 호출합니다.
- 이것../구성자동 도구의 일부가 잘 작동합니다.
단순 리디렉션으로 돌아갈 때
nice make -k -j 1 configure-host &>logfile
나는 (조용한 터미널을 사용하여) 로그 파일에서 많은 stdout 및 stderr을 수집합니다.
이것은 내 매크로입니다.
CAPTURELOG () {
log=$1; shift; rm -f ${LOGS}/${log}.log;
bash -c "$@" 2>&1 >>$LOGS/${log}.log | tee --append $LOGS/${log}.log; }
이것이 그 호출입니다:
export LOGS=/g/GNU-GCC/toolchain-avr/logs/D20161122.T023341
export MAKE_JOBS=1
...
CAPTURELOG build_gcc.configure-host nice make -k -j $MAKE_JOBS configure-host
실행은 다음과 같습니다.
+ CAPTURELOG build_gcc.make.configure-host nice make -k -j 1 configure-host
+ log=build_gcc.make.configure-host
+ shift
+ rm -f /g/GNU-GCC/toolchain-avr/logs/D20161122.T023341/build_gcc.make.configure-host.log
+ bash -c nice make -k -j 1 configure-host
+ tee --append /g/GNU-GCC/toolchain-avr/logs/D20161122.T023341/build_gcc.make.configure-host.log