Primeiro, consulte Como redirecionar stdout e stderr para um arquivo e exibir stderr para console
Esta solução funcionou maravilhas para mim. Eu invoquei ambos os scripts e comandos como o comando passado para bash -c. Eu até coloquei uma macro / função global para facilitar o uso (e evitar erros de digitação ou transposições nos redirecionamentos). Eu felizmente usei muitas, muitas vezes.
Então eu envolvi a invocação mágica ao redor
nice make -k -j 1 configure-host
para iniciar uma compilação / instalação preparada por autotools. Nenhuma saída de produção foi coletada. Na verdade, cada um dos três trabalhos de criação (configure-host, all, install) coloca apenas dois caracteres cada em meu arquivo de log.
Cada arquivo de saída consistia em 2 caracteres: um ascii zero e um retorno (0x300a). Deveria ter havido linhas e linhas geradas pelo make.
Eu tenho confundido minha cabeça, mas não vejo o que está acontecendo. Três pontos relevantes:
Quando volto ao redirecionamento simples
nice make -k -j 1 configure-host &>logfile
Eu coleto muitos stdout e stderr juntos no arquivo de log (com um terminal silencioso).
Aqui está minha macro:
CAPTURELOG () {
log=$1; shift; rm -f ${LOGS}/${log}.log;
bash -c "$@" 2>&1 >>$LOGS/${log}.log | tee --append $LOGS/${log}.log; }
Aqui está a sua invocação:
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
Aqui está a execução:
+ 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
Tags bash stdout tee stderr io-redirection