バックグラウンドで実行されているPythonスクリプトのstdoutをファイルにパイプできません。

バックグラウンドで実行されているPythonスクリプトのstdoutをファイルにパイプできません。

myscript.pyファイルを介して実行されるRaspbianを含むRaspberryPiにPythonスクリプトがありますrc.local。無限ループがあるため、バックグラウンドで実行する必要があります。これまでは大丈夫でしたが、このスクリプトの標準出力をファイルにパイプしたいのですが、うまくいきません。私のrc.localファイルは次のとおりです。

/usr/bin/python3 /home/pi/myscript.py >> /var/www/html/log.log &

私のlog.logファイルには666の権限があるので、私のスクリプトがファイルに書き込むことができるはずです。そうですか?しかしそれは真実ではない。

答え1

Pythonの出力はデフォルトでバッファリングされています。バッファリングを防ぐには、「-u」パラメータを使用する必要があります。だからこれはトリックを行う必要があります:

/usr/bin/python3 -u /home/pi/myscript.py >> /var/www/html/log.log &

関連情報