Неудачное решение от «Как перенаправить stdout и stderr в файл и отобразить stderr для консоли»

Во-первых, пожалуйста, обратитесь к разделу Как перенаправить stdout и stderr в файл и отобразить stderr для консоли

Это решение помогло мне. Я вызывал оба сценария и команды как команду, переданную в bash -c. Я даже написал написанный глобальный макрос / функцию, чтобы упростить его использование (и избегать любых опечаток или транспозиций в перенаправлениях). Я счастливо использовал его много раз.

Затем я завернул магический вызов вокруг

nice make -k -j 1 configure-host 

для начала сборки / установки, подготовленной с помощью autotools. Сбор не производился. Фактически, каждая из трех заданий (configure-host, all, install) помещает всего два символа в мой файл журнала.

Каждый выходной файл состоял из двух символов: ascii zero и return (0x300a). Должны быть линии и линии, генерируемые make.

Я озадачиваю голову, но не вижу, что происходит. Три соответствующих момента:

  1. Я запускаю MSYS2 / MinGW-W64 (32-разрядный XP).
  2. make вызывает скрипты autotools, которые выполняют много перенаправления с использованием не менее 6 FD.
  3. Компонент …/ configure 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 

Interesting Posts
Linux и Unix - лучшая ОС в мире.