まず参考にしてくださいstdoutとstderrをファイルにリダイレクトし、stderrをコンソールに表示する方法
この解決策は私にとって驚くべきことでした。コマンドがbash -cに渡されると、スクリプトとコマンドを呼び出します。私はより使いやすく(そしてリダイレクトの誤字や転置を防ぐために)グローバルマクロ/関数を書いた。何度も使って楽しんできました。
それから魔法をかけた
nice make -k -j 1 configure-host
autotoolsで準備したビルド/インストールを開始します。 Make 出力が収集されませんでした。 実際、3つのmakeジョブ(ホスト構成、すべて、インストール)のそれぞれは、マイログファイルに2文字だけを入力します。
各出力ファイルは、ASCII 0とキャリッジリターン(0x300a)の2文字で構成されています。 makeによって生成された行と行が必要です。
頭を叩いてみましたが、何が起こっているのか理解できません。 3つの関連事項:
- 私は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