2

システムが私に与えたエラーをファイルに入れようとしています。次のスクリプトがあります。

#!/bin/bash

logfile="output.log"

echo "Starting" > $logfile

./cpi 2>&1 >> $logfile

echo "Ending" >> $logfile

exit

そして、ファイルで得られる出力output.logは次のとおりです。

Starting
Ending

しかし、画面には次のように表示されます。

./cpi: error while loading shared libraries: libmpich.so.3: cannot open shared object file: No such file or directory

エラーは意図的なものです。#LD_LIBRARY_PATH からそのライブラリへのパスを取得しました。要点は、スクリプトが別のマシンで実行され、ライブラリがそこにない場合、画面に表示されるエラーを取得したいということです。

私自身のプログラムの出力も必要なので、2>&1 >> $logfileその実行後に必要です。

何かご意見は?

4

2 に答える 2

2

私は誤解しているかもしれません。

標準出力と標準エラーの両方を からcpiに移動する$logfile場合は、リダイレクトの順序を入れ替えます。

./cpi >> $logfile 2>&1
于 2012-08-23T18:33:38.917 に答える
0

このエラーは cpi バイナリではなくローダーによって報告されるため、リダイレクトはここでは機能しません。これは、cpi 内部エラーを生成することでテストできます。ラッパー スクリプトを使用して cpi を起動すると、このエラーをログに記録できる場合があります。

于 2012-08-23T18:29:23.050 に答える