Cronジョブはエラーログにエラーを書き込みますが、出力ログファイルに出力を書き込むことはできません。

Cronジョブはエラーログにエラーを書き込みますが、出力ログファイルに出力を書き込むことはできません。

2つのPythonコードがあり、cronを使用して予約します。私のコードは実際には毎日午前10時30分から午後4時20分まで実行されます。私のコードは午前10時30分から午前11時まで毎分2-3行を出力し、その後毎分30-40行を出力し始めます。私はこのようにコードを整理しました。

30 10  * * 1-5 cd /home/alpha/IBpy && python LongData.py >> /home/alpha/logs/Longdata.op 2>> /home/alpha/logs/Longdata.er
31 10  * * 1-5 cd /home/alpha/IBpy && python ShortData.py >> /home/alpha/logs/Shortdata.op 2>> /home/alpha/logs/Shortdata.er

今問題は、私のプログラムがうまくいっていて、やるべきことをすべてやっていることです。エラーが発生するとすぐにエラーログファイルにエラーが記録されますが、出力ファイルには1行も書き込まれません。私はこことstackoverflowで私に役立つかもしれないほとんどすべての投稿を確認しましたが、残念ながらそれらのどれも私には役に立ちませんでした。ただし、同じプログラムを10時30分の代わりに午前11時(プログラムが30〜40行の出力を開始したとき)に起動すると、すべてがうまく機能します。私は本当に私が何を間違っていたのかわかりません。 11時に計画を始めてはいけません。どんな助けでも大変感謝します。

ベストアンサー1

stdoutのデータがバッファリングされているため、この問題が発生したようです。 ~によるとこれ投稿ちょうどcronジョブを次のように変更しました。

31 10  * * 1-5 cd /home/alpha/IBpy && stdbuf -i0 -o0 -e0 python ShortData.py >> /home/alpha/logs/Shortdata.op 2>> /home/alpha/logs/Shortdata.er

今、すべてがうまくいっています。

おすすめ記事