Falha na solução de “Como redirecionar stdout e stderr para um arquivo e exibir stderr para console”

1

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:

  1. Estou executando o MSYS2 / MinGW-W64 (32 bits XP).
  2. make invoca scripts de autotools que fazem muitos redirecionamentos usando pelo menos 6 FDs.
  3. A parte ../ configure do autotools faz bem.

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
    
por HiTechHiTouch 29.11.2016 / 22:34

0 respostas