2017-03-19 7 views
0

python、time、teeの組み合わせに問題があります。pythonスクリプトのリダイレクトstdout +ファイルへの書き込み時間と引数付きの画面へ

私は次の行を含むスクリプトscript.sh持っている:私が行うとき、しかし

{ time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1 | tee log.log 

を:

source script.sh 

端末がちょうどハングします。

私はそのラインを置き換える興味深いことに

{ time python extractPassRate.py ; } 2>&1 | tee log.log 

(私はPythonスクリプトの引数を削除する場合には、ある) または

{ time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1 

(log.logする保存しない)

スクリプトは機能します。

最初の行に何か問題がありますか?周りグーグル

答えて

0

は、私はマシュー・アルパートによって、ここに解決策を見つけた: How to redirect output to a file and stdout

それはバッファリングの問題が原因だったようです。

マシューの答えはこう述べています。

プログラムのアンバッファ、期待していたパッケージの一部、 バッファリングの問題を解決します。これにより、stdoutとstderrは の画面とファイルにすぐに書き込みを行い、 と組み合わされてteeにリダイレクトされたときに同期を維持します。例:

$ unbuffer program [arguments ...] 2> & 1 |ティーアウトファイル

それは私のために働いた

関連する問題