2016-10-27 13 views
0

STDOUTSTDERRをraspberry piのログファイルにリダイレクトしようとしています。 マイ.shスクリプトはこの行stdoutとstderrをraspbianで動作しないファイルへのリダイレクト

sudo ./main.py &> client.log & 

が含まれている、それは私のサーバーにしてからデータを転送するようスクリプトが正常に実行されますが、client.logファイルは空のまま。私は試みた&>; &>>; >>2>&1;および|&。それらのどれもclient.logにデータを書き込む人はいません。

sudo ./main.py 

は両方stdoutstderr出力を生成します。私は間違って何をしていますか?

答えて

2

あなたが探している構文は次のとおりです。

sudo ./main.py > client.log 2>&1 & 
  • > client.logは、行の最後に実行に
  • &をstdoutに標準エラー出力をリダイレクトする
  • 2>&1ファイルclient.logに標準出力をリダイレクトこれはバックグラウンドで、コマンドプロンプトで作業を続けることができます。

注:バックグラウンドコマンドの実行中にログオフすると、そのユーザーは強制終了されます。この動作を無効にするには、行の先頭にnohupを追加します。

sudo stdbuf -o L -e L ./main.py > client.log 2>&1 & 
  • stdbuf
  • -o Lをフラッシュがで標準出力デフォルトのLinuxの出力バッファリングを変更します。詳細については


    編集bash jobs

    以下のコメントの後に改訂版構文を追加情報を追加するには、Googleすべての行の最後

  • -e Lをフラッシュは、すべての行の末尾に標準エラー出力
+0

私は間違っているようです...私の元の投稿のこのソリューションと他のいくつかのものは、client.logにデータを書きますが、stdout/stderrに書き込まれてから15分から数時間かかるmain.pyによって、出力は任意の位置、つまり行の途中で途切れる傾向があります。 – Mirac7

+0

Aha - それも解決できます。上記の編集を参照してください。 –

0

のpython test.py -u> output.txtと& Pythonは、デフォルトでは、あなたの出力をバッファリングし、単にスクリプトを殺害し、すぐにフラッシュではないことを標準出力しますディスクへ

関連する問題